メインコンテンツへスキップ
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トークンを使用して、MFA Associate エンドポイントで認証要素を登録します。認証要素に応じてこのフローを実装するには、以下のリンクを参照してください。

ユーザーに MFA チャレンジを要求する

ユーザーがすでに MFA に登録済みの場合は、既存の認証要素のいずれかを使用してユーザーにチャレンジする必要があります。MFA Challenge エンドポイントを呼び出す際は、MFA Authenticators エンドポイントから返される authenticator_id を使用します。 チャレンジが完了したら、認証フローを完了して認証トークンを取得するために、/oauth/token エンドポイントをもう一度呼び出します。 認証要素に応じてこのフローを実装するには、以下のリンクを参照してください。

MFA OTP コードの制限事項

有効期限: MFA OTP コードの有効期限は 5 分です。この値は設定できません。 コードの検証: ユーザーが MFA OTP コードの検証に成功すると、そのコードは再利用できません。 コード検証のレート制限: ユーザーによるコード検証の失敗試行には、バケットアルゴリズムに基づくレート制限が適用されます。バケットは 10 回分の試行枠で開始され、6 分ごとに 1 回分補充されます。

MFA をカスタマイズする

Resource Owner Password Grant、Embedded、または Refresh Token フローでのカスタマイズ可能な MFA は、早期アクセスで提供されています。この機能を使用すると、Okta のMaster Subscription Agreementに記載されている該当する Free Trial 条項に同意したものとみなされます。Auth0 のリリースステージの詳細については、Product Release Stagesを参照してください。早期アクセスへの参加をご希望の場合は、Auth0 Support までお問い合わせください。
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 オブジェクト を参照してください。

関連情報