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

> カスタムトークン交換で多要素認証（MFA）を利用する方法を学びます。

# カスタムトークン交換での多要素認証（MFA）

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  `api.authentication.setActor()` で actor が設定されるカスタムトークン交換のトランザクションでは、MFA は使用できません。MFA が必要な場合 (ポリシーまたは Post-Login Action による) に、カスタムトークン交換 Action で actor を設定すると、トランザクションは `400` エラー `MFA is not supported using actor_token with the requested token exchange profile.` で失敗します。
</Callout>

トークンの盗難やその他のセキュリティリスクへの対策として、次のいずれかの方法でカスタムトークン交換リクエストに多要素認証を追加できます。

* テナントで [MFA ポリシーを有効にして設定する](/docs/ja-jp/secure/multi-factor-authentication/enable-mfa)
* Post-Login Action で `api.multifactor.enable()` を使用する

MFA を追加すると、Auth0認可サーバーは最初のカスタムトークン交換の `/token` エンドポイントへの呼び出しを、`mfa_required` エラーで拒否します。要求された Auth0 のアクセストークン、ID トークン、リフレッシュトークンを取得するには、このエラーを [Auth0 MFA API](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/mfa-api) で使用し、認証要素に対する challenge と検証を行えます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  カスタムトークン交換では、`api.authentication.challengeWith()`、`api.authentication.enrollWith()`、`api.redirect.*`、`api.prompt.*` はサポートされていません。これらのメソッドを Post-Login Action で使用する場合は、`subject_token_type` の値に応じて、`event.transaction.protocol==oauth2-token-exchange` の場合にこれらのメソッドを使用しないようにしてください。
</Callout>

カスタムトークン交換のトランザクションが組織に関連付けられている場合、`api.multifactor.enable()` と MFA ポリシーもサポートされません。

MFA グラントの使い方について詳しくは、カスタムトークン交換も同じモデルに従うため、[MFA を使用してリソース所有者パスワードフローで認証する](/docs/ja-jp/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa) を参照してください。詳しい例については、[ユースケース: カスタムトークン交換中に MFA を実行する](/docs/ja-jp/authenticate/custom-token-exchange/cte-example-use-cases#use-case%3A-perform-mfa-during-custom-token-exchange) もご覧ください。
