方法の設定
ログインしたユーザーの設定画面に「2段階認証」の項目を用意し、getMethods が許す方法を選べるようにします。
認証アプリのコード
Section titled “認証アプリのコード”enrollTotp(userId, label)は、qrCode(<img>に使える PNG の data URI)、secret(手入力用)、まだPENDINGの方法を返します。- ユーザーは Tenon Authenticator または任意の認証アプリでスキャンし、最初のコードを入力します。
activateFactor(userId, factorId, code):方法が有効になり、以前の方法と置き換わります。コードが違うとInvalidCodeになるので、もう一度入力してもらいます。15分経つか5回間違えると、設定からやり直しです(enrollment_expired)。
TotpEnrollment totp = tenonAuth.enrollTotp(user.id(), "顧客ポータル");// 画面:<img src="${totp.qrCode()}">、totp.secret()、最初のコードの入力欄。tenonAuth.activateFactor(user.id(), totp.factor().id(), code);const totp = await tenonAuth.enrollTotp(user.id, '顧客ポータル');// 画面:<img src={totp.qrCode}>、totp.secret、最初のコードの入力欄。await tenonAuth.activateFactor(user.id, totp.factor.id, code);totp = tenon_auth.enroll_totp(user.id, "顧客ポータル")# 画面:<img src="{{ totp.qr_code }}">、totp.secret、最初のコードの入力欄。tenon_auth.activate_factor(user.id, totp.factor.id, code)var totp = await tenonAuth.EnrollTotpAsync(user.Id, "顧客ポータル");// 画面:<img src="@totp.QrCode">、totp.Secret、最初のコードの入力欄。await tenonAuth.ActivateFactorAsync(user.Id, totp.Factor.Id, code);ログイン承認(Tenon Authenticator)
Section titled “ログイン承認(Tenon Authenticator)”enrollPush(userId, label)は、qrCode、enrollmentUri(同じスマートフォンでアプリを開くリンク)、activationNumberを返します。- ユーザーは Tenon Authenticator で QR コードをスキャンし、画面に表示した確認番号を入力します。
- 3秒ごとに
listFactorsを確認し、次のどれかになるまで待ちます:- 方法が
ACTIVEになった:完了です。以前の方法と置き換わりました。 - 方法がなくなった:番号を間違えたので、やり直します。
expiresAtを過ぎた。
- 方法が
メールのコード
Section titled “メールのコード”getMethods().emailAllowed のときだけ、またドメインの指定があればそのドメインだけで使えます。
enrollEmail(userId, email, label, language)がそのアドレスにコードを送ります。アドレスはユーザーに自由に入力させず、自社の記録(社員名簿など)から取ってください。- ユーザーがコードを入力します:
activateFactor。
エラー:
email_codes_not_allowedまたはemail_domain_not_allowedのEmailRefusedTooManyRequestsEmailUnavailable:メールを送れなかったので、あとで試してください
次に:リカバリーコード
Section titled “次に:リカバリーコード”方法が有効になったらすぐに createRecoveryCodes(userId) を呼び、10個のコードを1回だけ、ダウンロードと印刷のボタンつきで表示します。以前のコードは無効になります。設定画面には getRecoveryCodes(userId).remaining を表示し、残りが少なくなったら新しいコードを勧めてください。
deleteFactor(userId, factorId) で方法を削除します。そのユーザーの記憶したデバイスとリカバリーコードも使えなくなります。ユーザーが2段階目を無効にしてよいかどうかは、あなたのポリシーです。