> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# チャレンジリクエスト

> トークンエンドポイントで認証を続行するため、MFA チャレンジ (OTP または OOB) をリクエストします。

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## エンドポイント
</div>

`POST /mfa/challenge`

多要素認証 (MFA) API エンドポイントでは、ユーザーが[トークンエンドポイント](#get-token)を利用する際に MFA を強制できるほか、ユーザー認証要素の登録と管理も行えます。

まず、アプリケーションとユーザーでサポートされているチャレンジタイプに基づいて、チャレンジをリクエストします。ワンタイムパスワード (OTP) がサポートされていることがわかっている場合は、チャレンジリクエストを省略できます。

次に、`/oauth/token` エンドポイントと指定したチャレンジタイプ (ワンタイムパスワード (OTP) 、リカバリーコード、または帯域外 (OOB) チャレンジ) を使用して、多要素認証を検証します。

詳細については、以下を参照してください。

* [多要素認証とリソースオーナーパスワード](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)
* [多要素認証 API](https://auth0.com/docs/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/mfa-api)
* [Auth0 における多要素認証](https://auth0.com/docs/secure/multi-factor-authentication)

<div id="challenge-request">
  ## チャレンジリクエスト
</div>

アプリケーションとユーザーでサポートされているチャレンジタイプに応じて、MFA のチャレンジをリクエストします。

`challenge_type` は、ユーザーがどの方法でチャレンジを受け取り、所持を証明するかを示します。サポートされているチャレンジタイプは次のとおりです。

* `otp`: ワンタイムパスワード (OTP) 用
* `oob`: SMS/音声メッセージ、または帯域外 (OOB) 用

ユーザーが OTP をサポートしており、別の要素をリクエストする必要がない場合は、チャレンジのリクエストを省略して、[ワンタイムパスワードを使用した多要素認証の検証](#verify-with-one-time-password-otp-)を行えます。

<div id="remarks">
  ### 注意事項
</div>

* このエンドポイントは登録をサポートしていません。チャレンジをリクエストする前に、ユーザーは希望する方法で事前に登録されている必要があります。
* Auth0 は、アプリケーションでサポートされているタイプと、ユーザーが登録しているタイプに基づいて、チャレンジタイプを選択します。
* アプリケーションが、ユーザーが登録しているいずれのチャレンジタイプもサポートしていない場合、`unsupported_challenge_type` エラーが返されます。
* ユーザーが登録されていない場合は、`unsupported_challenge_type` エラーが返されます。
* ユーザーが登録されていない場合は、`association_required` エラーが返されます。これは、MFA を使用するにはユーザーが登録する必要があることを示します。続行方法については、以下の[認証要素を追加する](/ja/multi-factor-authentication/add-an-authenticator)を参照してください。

<div id="learn-more">
  ### 詳しく見る
</div>

* [リソースオーナー パスワードグラントとMFAを使用した認証](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)
* [MFA API を使用した認証要素の管理](https://auth0.com/docs/secure/multi-factor-authentication/manage-mfa-auth0-apis/manage-authenticator-factors-mfa-api)

<div id="body-parameters">
  ## リクエスト本文のパラメーター
</div>

<ParamField body="mfa_token" type="string" required>
  `mfa_required` エラーで受け取ったトークン。
</ParamField>

<ParamField body="client_id" type="string" required>
  アプリケーションのクライアントID。
</ParamField>

<ParamField body="client_secret" type="string">
  アプリケーションのクライアントシークレット。
</ParamField>

<ParamField body="challenge_type" type="string">
  アプリケーションが受け付けるチャレンジタイプの空白区切りリスト。

  使用可能な値: `oob`, `otp`
</ParamField>

<ParamField body="client_assertion" type="string">
  アプリケーションの認証情報を含む署名付きアサーションを格納した JWT。
</ParamField>

<ParamField body="client_assertion_type" type="string">
  値は `urn:ietf:params:oauth:client-assertion-type:jwt-bearer` です。
</ParamField>

<ParamField body="authenticator_id" type="string">
  チャレンジする認証要素の ID。
</ParamField>

<div id="response-schema">
  ## レスポンススキーマ
</div>

<ResponseSchema statusCode="200">
  <ResponseField name="challenge_type" type="string">
    この認証要素が発行するチャレンジの種類です。使用可能な値: `otp`, `oob`。
  </ResponseField>

  <ResponseField name="oob_code" type="string">
    帯域外チャレンジ用のコードです。`challenge_type` が `oob` の場合にのみ存在します。
  </ResponseField>

  <ResponseField name="binding_method" type="string">
    バインディングに使用されるメソッドです。該当する場合にのみ存在します。使用可能な値: `prompt`。
  </ResponseField>
</ResponseSchema>

<ResponseSchema statusCode="400">
  <ResponseField name="error" type="string">
    エラーコード。
  </ResponseField>

  <ResponseField name="error_description" type="string">
    詳細なエラー説明です。
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## レスポンスメッセージ
</div>

| ステータス | 説明                                  |
| ----- | ----------------------------------- |
| 200   | チャレンジリクエストが正常に完了しました                |
| 400   | サポートされていないチャレンジタイプや登録漏れなど、無効なリクエスト。 |
