コンテンツにスキップ

方法の設定

ログインしたユーザーの設定画面に「2段階認証」の項目を用意し、getMethods が許す方法を選べるようにします。

  1. enrollTotp(userId, label) は、qrCode(<img> に使える PNG の data URI)、secret(手入力用)、まだ PENDING の方法を返します。
  2. ユーザーは Tenon Authenticator または任意の認証アプリでスキャンし、最初のコードを入力します。
  3. 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);

ログイン承認(Tenon Authenticator)

Section titled “ログイン承認(Tenon Authenticator)”
  1. enrollPush(userId, label) は、qrCode、enrollmentUri(同じスマートフォンでアプリを開くリンク)、activationNumber を返します。
  2. ユーザーは Tenon Authenticator で QR コードをスキャンし、画面に表示した確認番号を入力します。
  3. 3秒ごとに listFactors を確認し、次のどれかになるまで待ちます:
    • 方法が ACTIVE になった:完了です。以前の方法と置き換わりました。
    • 方法がなくなった:番号を間違えたので、やり直します。
    • expiresAt を過ぎた。

getMethods().emailAllowed のときだけ、またドメインの指定があればそのドメインだけで使えます。

  1. enrollEmail(userId, email, label, language) がそのアドレスにコードを送ります。アドレスはユーザーに自由に入力させず、自社の記録(社員名簿など)から取ってください。
  2. ユーザーがコードを入力します:activateFactor。

エラー:

  • email_codes_not_allowed または email_domain_not_allowed の EmailRefused
  • TooManyRequests
  • EmailUnavailable:メールを送れなかったので、あとで試してください

方法が有効になったらすぐに createRecoveryCodes(userId) を呼び、10個のコードを1回だけ、ダウンロードと印刷のボタンつきで表示します。以前のコードは無効になります。設定画面には getRecoveryCodes(userId).remaining を表示し、残りが少なくなったら新しいコードを勧めてください。

deleteFactor(userId, factorId) で方法を削除します。そのユーザーの記憶したデバイスとリカバリーコードも使えなくなります。ユーザーが2段階目を無効にしてよいかどうかは、あなたのポリシーです。