メインコンテンツへスキップ
が有効な場合、Auth0のMFA APIリソース所有者のパスワードフロー(ROPG:リソース所有者パスワード付与とも呼ばれる)を用いた認証フローで利用することができます。

前提条件

MFA APIを使用するには、事前にアプリケーションに対してMFAの付与タイプを有効にする必要があります。[Auth0 Dashboard]>[Applications(アプリケーション)]>[Advanced Settings(詳細設定)]>[Grant Types(付与タイプ)]に移動し、[MFA] を選択します。

ユーザーを認証する

リソース所有者のパスワードフローを用いた認証では、ユーザー名とパスワードを使用して/oauth/tokenエンドポイントを呼び出します。
curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=password \
  --data username=user@example.com \
  --data password=pwd \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data audience=https://someapi.com/api \
  --data 'scope=openid profile read:sample'
MFAが有効な場合には、mfa_requiredエラーとmfa_tokenが返されます。
{
    "error": "mfa_required",
    "error_description": "Multifactor authentication required",
    "mfa_token": "Fe26...Ha"
}
上記のエラーを受信した場合には、ユーザーにMFA要素が登録されているかどうかを確認する必要があります。前のセクションで取得したMFAトークンを使用して、MFAオーセンティケーターエンドポイントを呼び出します。

登録されているオーセンティケーターを取得する

curl --request GET \
  --url 'https://{yourDomain}/mfa/authenticators' \
  --header 'authorization: Bearer MFA_TOKEN' \
  --header 'content-type: application/json'
使用可能なオーセンティケーターの配列が取得できます。ユーザーが要素を登録しなかった場合、配列は空になります。
[
    {
        "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に登録されている場合には、既存の要素の1つを使用してユーザーにチャレンジする必要があります。MFAオーセンティケーターエンドポイントから返されたauthenticator_idを使用して、MFAチャレンジエンドポイントを呼び出します。

MFAを使用してユーザーにチャレンジする

チャレンジが完了したら、もう一度/oauth/tokenエンドポイントを呼び出して認証フローを完了させ、認証トークンを取得します。 認証要素に合わせてこのフローを実装するには、以下のリンクを参照してください。 認証要素に合わせてこのフローを実装するには、以下のリンクを参照してください。

MFA OTPコードの制限と制約

有効期間 :MFA OTPコードの有効期限は5分です。この値の構成は変更できません。 コード検証 :ユーザーがMFA OTPコードを検証すると、そのコードは再度使用できません。 コード検証のレート制限 :ユーザー検証の試行が失敗すると、バケットアルゴリズムを使用してレート制限が適用されます。バケットは10回の試行から始まり、6分ごとに1回の試行が補充されます。

もっと詳しく

I