メインコンテンツへスキップ
Auth0 では、Universal Login を使用した組み込みの の登録および認証フローを利用できます。ただし、独自のユーザーインターフェースを作成する場合は、MFA API を使用して実現できます。

前提条件

MFA API を使用する前に、アプリケーションで MFA の grant type を有効にする必要があります。Auth0 Dashboard > Applications > Advanced Settings > Grant Types に移動し、MFA を選択します。

OTP で登録

MFAトークンを取得する

登録を開始するタイミングに応じて、MFA API で使用する は、次のいずれかの方法で取得できます。

認証要素を登録する

ユーザーの認証要素を登録するには、MFA Associate エンドポイントに POST リクエストを送信します。このエンドポイントに必要な Bearer トークンは、前の手順で取得した MFA トークンです。 OTP で登録するには、authenticator_types パラメーターを [otp] に設定します。 成功すると、次のようなレスポンスが返されます。
{
  "authenticator_type": "otp",
  "secret": "EN...S",
  "barcode_uri": "otpauth://totp/tenant:user?secret=...&issuer=tenant&algorithm=SHA1&digits=6&period=30",
  "recovery_codes": [ "N3B...XC"]
}
User is already enrolled エラーが表示された場合、そのユーザーにはすでに MFA 認証要素が登録されています。ユーザーに別の認証要素を関連付ける前に、既存の認証要素によるチャレンジを実行する必要があります。 これがユーザーによる認証要素の関連付けの初回である場合、レスポンスに recovery_codes が含まれていることがわかります。リカバリーコードは、第 2 要素認証に使用しているアカウントまたはデバイスにアクセスできなくなった場合に、ユーザーが自分のアカウントにアクセスするために使用されます。これらは 1 回限り使用可能な code であり、必要に応じて新しいものが生成されます。

OTP 登録の確認

登録を確認するには、エンドユーザーが前の手順で取得したシークレットを、Google Authenticator などの OTP 生成アプリケーションに入力する必要があります。シークレットは、barcode_uri を使用して QR コードをスキャンするか、OTP アプリケーションにシークレットを手動で入力して登録できます。ユーザーが QR コードをスキャンできない場合に備えて、シークレットをテキストとして取得できる手段を提供してください (たとえば、モバイルデバイスから登録している場合や、デスクトップ OTP アプリケーションを使用している場合) 。 ユーザーがシークレットを入力すると、OTP アプリケーションに 6 桁の code が表示されます。ユーザーはその code をアプリケーションに入力する必要があります。続いて、アプリケーションはその otp 値を含めて、 POST リクエストを送信する必要があります。 呼び出しが成功すると、アクセストークンを含む次の形式のレスポンスが返されます。
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}
この時点で、認証要素の関連付けは完了しており、使用できる状態です。また、ユーザーの認証トークンも取得済みです。 MFA Authenticators エンドポイントを呼び出すことで、認証要素が確認済みかどうかはいつでも確認できます。認証要素が確認済みの場合、active に返される値は true です。

OTP による認証チャレンジ

MFAトークンを取得する

MFA と Resource Owner Password Grant を使用して認証するで説明されている手順に従って、MFAトークンを取得します。

登録済みの認証手段を取得する

MFA Authenticators エンドポイントを使用すると、登録済みの認証手段をすべて一覧表示できます。 次の形式で認証手段の一覧が返されます。
[
    {
        "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "totp|dev_6NWz8awwC8brh2dN",
        "authenticator_type": "otp",
        "active": true
    }
]

受け取った code を使用して認証を完了する

ユーザーがワンタイムパスワードを受け取ったら、その値をユーザーから取得します。otp パラメーターにワンタイムパスワードを指定して OAuth0 Token エンドポイントを使用すると、code を検証し、認証トークンを取得できます。 呼び出しが成功すると、アクセストークンを含む、以下の形式のレスポンスが返されます。
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}

MFA をカスタマイズする

Resource Owner Password Grant、Embedded、またはリフレッシュトークンのフローでのカスタマイズ可能な MFA は EA です。この機能を使用すると、Okta のマスターサブスクリプション契約に定める該当する Free Trial 条項に同意したものとみなされます。Auth0 のリリースステージの詳細については、Product Release Stages を参照してください。EA への参加を希望する場合は、Auth0 Support にお問い合わせください。
カスタマイズ可能な MFA では、ユーザーはアプリケーションでサポートされている認証要素の中から任意のものを選んで、登録や認証チャレンジを行えます。 oauth/token エンドポイントでの認証中、レスポンスは 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" }
      { "type": "email"} //チャレンジでのみ使用可能
    ]
  }
}
mfa_token を使用して mfa/authenticator エンドポイントを呼び出し、ユーザーが登録済みのすべての認証要素の一覧を取得して、アプリケーションでサポートしている種類と照合します。チャレンジを発行するには、対応する 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 Triggers: post-challenge - API Object を参照してください。

詳細情報