利用可否は Auth0 のプランによって異なります
この機能が利用できるかどうかは、使用しているログイン実装と Auth0 のプランまたはカスタム契約の両方によって異なります。詳しくは、Pricing をご覧ください。
前提条件
- Email を認証要素として、Auth0 Dashboard または Management API で設定します。
メールを登録する
MFAトークンを取得する
- 認証時に登録する場合は、Authenticate With Resource Owner Password Grant and MFAを参照してください。
- ユーザーが任意のタイミングで認証要素を登録できるようにする場合は、Manage MFA Factor Enrollmentsを参照してください。
認証器を登録
POST リクエストを送信します。このエンドポイントで必要なベアラートークンは、前のステップで取得した MFAトークン です。
次のパラメーターを使用します。
成功すると、次のようなレスポンスが返されます。
User is already enrolled エラーが表示された場合、そのユーザーにはすでに MFA の認証要素が登録されています。ユーザーに別の認証要素を関連付ける前に、既存の認証要素でチャレンジを実行する必要があります。
これがユーザーが初めて認証器を関連付ける場合、レスポンスに recovery_codes が含まれていることがわかります。リカバリーコードは、第 2 認証要素の認証に使用しているアカウントやデバイスにアクセスできなくなった場合に、ユーザーがアカウントにアクセスするために使用されます。これらのコードは 1 回限り有効で、必要に応じて新しいコードが生成されます。
メール登録を確認する
/oath/token エンドポイントに POST リクエストを送信します。前のレスポンスで返された oob_code と、メール本文に記載された値を binding_code に含めてください。
呼び出しに成功すると、access token を含む以下の形式のレスポンスが返されます:
active に返される値は true です。
必要に応じて、ユーザーが受信するメールをカスタマイズできます。詳しくは、メールテンプレートをカスタマイズする を参照してください。
メールによる認証チャレンジ
MFAトークンを取得
Resource Owner Password グラントと MFA を使用して認証する で説明されている手順に従って、MFAトークンを取得します。登録済みの認証器を取得する
authenticator_id が必要です。MFA Authenticators エンドポイントを使用して、登録済みの認証器をすべて一覧表示できます。
OTP でユーザーに認証を求める
authenticator_id と mfa_token を使用して、MFA Challenge エンドポイントに POST リクエストを送信します。
受信したコードで認証を完了する
oauth``/tokenエンドポイントへの呼び出しで、そのコードをbinding_codeパラメータの一部としてリクエストに含めて送信する必要があります。
呼び出しに成功すると、以下の形式で access token を含むレスポンスが返されます。
MFA をカスタマイズする
oauth/token endpoint での authentication 中、レスポンスでは mfa_required エラーが返されます。このエラーには、MFA API で使用する mfa_token と、認証器の一覧を含む mfa_requirements パラメーターが含まれます。
mfa_token を使用して mfa/authenticator endpoint を呼び出し、ユーザーが登録済みのすべての認証要素の一覧を取得したうえで、アプリケーションがサポートする同じ種類のものを特定します。チャレンジを発行するには、対応する authenticator_type も取得する必要があります:
request/mfa/challenge endpointを呼び出して、MFAチャレンジを必須にします。
Auth0 Actionsを使用すると、MFAフローをさらにカスタマイズできます。詳細については、Actions トリガー: post-challenge - API オブジェクトをご覧ください。