Auth0 MFA API を使用すると、 Password Grant または ROPG とも呼ばれる Resource Owner Password Flow を使って、 が有効な場合に認証フローを完了できます。
MFA APIを使用するには、事前にアプリケーションでMFAのグラントタイプを有効にしておく必要があります。Auth0 Dashboard > アプリケーション > Advanced Settings > グラントタイプ に移動し、MFA を選択します。
Resource Owner Password Flow を使用して認証する場合は、ユーザーのユーザー名とパスワードを指定して /oauth/token エンドポイントを呼び出します。
MFA が有効な場合、レスポンスには mfa_required エラーと mfa_token が含まれます。
https://{yourDomain}/mfa/* audience を持つアクセストークンのデフォルトの有効期限は 10 分です。この値は変更できません。
上記のエラーが返されたら、ユーザーに MFA 認証要素が登録されているかどうかを確認する必要があります。前のセクションで取得した MFA トークンを使用して、MFA 認証器エンドポイント を呼び出します。
利用可能な認証器の配列が返されます。ユーザーが認証要素を登録していない場合、その配列は空になります。
ユーザーがMFAに未登録の場合は、先ほど取得したMFA トークンを使用して、MFA Associate endpointで登録します。認証要素に応じてこのフローを実装する方法については、次のリンクを参照してください。
ユーザーがすでに MFA に登録済みの場合は、既存の認証要素のいずれかを使ってチャレンジする必要があります。MFA Challenge エンドポイントを呼び出す際は、MFA 認証器 エンドポイントから返される authenticator_id を使用します。
チャレンジが完了したら、認証フローを完了して認証トークンを取得するために、/oauth/token エンドポイントをもう一度呼び出します。
認証要素に応じてこのフローを実装するには、以下のリンクを参照してください。
有効期限: MFA OTPコードの有効期限は5分です。この値は設定できません。
コードのバリデーション: ユーザーがMFA OTPコードをバリデーションすると、そのコードは再度使用できません。
コードのバリデーションに対するレート制限: ユーザーによるバリデーションが失敗した場合、バケットアルゴリズムによってレート制限されます。バケットは最初に10回分の試行回数を持ち、6分ごとに1回分回復します。
MFA API を使用して、MFA フローをカスタマイズできます。MFA API を使うと、アプリケーションでサポートしている特定の認証要素について、ユーザーが登録やチャレンジを行えるようにできます。
認証のために Resource Owner Password Flow で MFA が有効になっている場合は、/oauth/token endpoint を呼び出してアクセストークンをリクエストします。認可サーバーは mfa_required エラーを返し、次の情報を提供します。
- 登録とチャレンジのために MFA API を呼び出す際に必要な
mfa_token。
mfa_requirements パラメーター。これには、チャレンジでアプリケーションがサポートする認証要素の種類が含まれます。
mfa_token を使用して mfa/authenticator エンドポイント を呼び出し、ユーザーが登録済みの認証要素をすべて一覧表示して、アプリケーションがサポートしている同じ種類のものを特定します。 また、チャレンジを発行するには、対応する authenticator_type も取得する必要があります:
request/mfa/challenge エンドポイントを呼び出して、MFA チャレンジを必須にします。
Auth0 Actions を使用すると、MFA フローをさらにカスタマイズできます。詳しくは、Actions トリガー: post-challenge - API オブジェクト をご覧ください。