Auth0 MFA API を使用すると、 が有効な場合に、Resource Owner Password Flow ( Password Grant または ROPG とも呼ばれます) を使用して認証フローを完了できます。
MFA API を使用する前に、アプリケーションで MFA のグラントタイプを有効にする必要があります。Auth0 Dashboard > Applications > Advanced Settings > Grant Types に移動して、MFA を選択します。
Resource Owner Password Flow を使用して認証する場合は、ユーザーの username とパスワードを指定して /oauth/token エンドポイントを呼び出します。
MFA が有効な場合、レスポンスには mfa_required エラーと mfa_token が含まれます。
https://{yourDomain}/mfa/* の audience を持つアクセストークンのデフォルトの有効期限は 10 分です。この値は構成できません。
{
"error": "mfa_required",
"error_description": "Multifactor authentication required",
"mfa_token": "Fe26...Ha"
}
上記のエラーが発生した場合は、ユーザーに MFA の認証要素が登録されているかどうかを確認する必要があります。前のセクションで取得した MFA トークンを使用して、MFA Authenticators エンドポイントを呼び出します。
利用可能な認証器の配列が返されます。ユーザーが認証要素を登録していない場合、この配列は空です。
[
{
"id": "recovery-code|dev_O4KYL4FtcLAVRsCl",
"authenticator_type": "recovery-code",
"active": true
},
{
"id": "email|dev_NU1Ofuw3Cw0XCt5x",
"authenticator_type": "oob",
"active": true,
"oob_channel": "email",
"name": "email@address.com"
}
]
ユーザーがまだMFAに登録されていない場合は、先ほど取得したMFAトークンを使用して、MFA Associate エンドポイントで認証要素を登録します。認証要素に応じてこのフローを実装するには、以下のリンクを参照してください。
ユーザーがすでに MFA に登録済みの場合は、既存の認証要素のいずれかを使用してユーザーにチャレンジする必要があります。MFA Challenge エンドポイントを呼び出す際は、MFA Authenticators エンドポイントから返される 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 パラメーター。これは、チャレンジでアプリケーションがサポートする認証要素の種類を示します。
{
"error": "mfa_required",
"error_description": "Multifactor authentication required",
"mfa_token": "Fe26...Ha",
"mfa_requirements": {
"challenge": [
{ "type": "otp" },
{ "type": "push-notification" },
{ "type": "phone" },
{ "type": "recovery-code" }
]
}
}
mfa_token を使用して mfa/authenticator endpoint を呼び出し、ユーザーが登録済みの認証要素をすべて一覧し、その中からアプリケーションでサポートしている種類と一致するものを特定します。チャレンジを発行するには、対応する authenticator_type も取得する必要があります。
[
{
"type": "recovery-code",
"id": "recovery-code|dev_qpOkGUOxBpw6R16t",
"authenticator_type": "recovery-code",
"active": true
},
{
"type": "otp",
"id": "totp|dev_6NWz8awwC8brh2dN",
"authenticator_type": "otp",
"active": true
}
]
request/mfa/challenge エンドポイントを呼び出して、MFA チャレンジを必須にします。
Auth0 Actions を使用すると、MFA フローをさらにカスタマイズできます。詳細については、Actions トリガー: post-challenge - API オブジェクト を参照してください。