> ## 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.

> Auth0 のトークン交換フロー（RFC 8693）について、Auth0 トークンを発行するためのカスタムトークン交換プロファイルと Actions の設定方法を含めて理解します。

# カスタムトークン交換フロー

カスタムトークン交換では、アプリケーションは `/oauth/token` エンドポイントを呼び出すことで、既存のセキュリティトークン (`subject_token`) を Auth0 のアクセストークン、ID トークン、リフレッシュトークンに交換できます。これは [RFC 8693](https://datatracker.ietf.org/doc/html/rfc8693) に準拠しています。

<div id="how-it-works">
  ## 仕組み
</div>

カスタムトークン交換フローは、単一の専用 [Custom Token Exchange Action](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger) によって制御されます。この Action は、[カスタムトークン交換プロファイル](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange) で設定された、受信 `subject_token_type` パラメーターに基づいて一意に選択されます。

<Frame>
  <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/custom-token-exchange/cte_how_it_works_diagram.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=a9ae180f06e5475951032bff449c786d" alt="" width="1372" height="846" data-path="docs/images/custom-token-exchange/cte_how_it_works_diagram.png" />
</Frame>

このフローの前提条件として、特定の `subject_token_type` を、そのリクエストを処理する Action にマッピングする [カスタムトークン交換プロファイル](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) を定義する必要があります。

カスタムトークン交換フローがトリガーされると、次のように処理されます。

1. アプリケーションは、交換対象のセキュリティトークン (`subject_token`) と対応する `subject_token_type` を含む `POST` リクエストを `/oauth/token` エンドポイントに送信します。リクエストには、ユーザーに代わって動作するプリンシパルを識別するための `actor_token` と `actor_token_type` を必要に応じて含めることもできます。
2. Auth0 はクライアントのリクエストと資格情報を検証します。
3. 関連付けられた Custom Token Exchange Action が実行されます。カスタムコードでは、`subject_token` をデコードして検証し、必要な認可ポリシーを適用したうえで、交換を承認するために トランザクション のユーザーを設定する必要があります。また、Action は `api.authentication.setActor()` を使って トランザクション の actor を設定することもでき、その結果、発行されるトークンに、ユーザーに代わって動作している主体を示す `act` claim が含まれます。
4. 続いて、標準の Auth0 pipeline の残りの処理が実行され、設定されたユーザーに対して Auth0 アクセストークン が生成され、必要に応じて ID トークン と リフレッシュトークン も生成されます。
5. リクエスト元のアプリケーションは、その後、Action で設定されたユーザーに代わって API を安全に呼び出すために、これらの新しく発行されたトークンを使用できます。

`audience` を `urn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer` に設定すると、アクセストークンではなく Session Transfer Token が返されます。このトークンをアプリケーションで引き換えることで、別のユーザーとして Web セッションを確立できます。詳細については、[セッション委譲](/docs/ja-jp/authenticate/single-sign-on/session-delegation) を参照してください。

<div id="get-started">
  ## はじめに
</div>

カスタムトークン交換を使用するには、[カスタムトークン交換プロファイルを作成する](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile)必要があります。一般的なワークフローは、3 つの主要な設定手順の後に API 呼び出しを行う流れになります。

1. トークン交換を制御するロジックを含む [Action を作成してデプロイする](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-action-for-the-profile)。この Action では、次の処理を行うカスタムコードを記述します。
   * 受信した `subject_token` を安全にデコードして検証する。
   * トランザクションに必要な認可手順を実行する。
   * 利用可能な [カスタムトークン交換 Actions API オブジェクト](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger/custom-token-exchange-api-object)のメソッドを使用して、トランザクションに対応するユーザーを設定する。
2. テナントに [カスタムトークン交換プロファイルを作成する](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile)。このプロファイルにより、リクエストで使用する特定の `subject_token_type` と、先ほど作成した Action の間に 1 対 1 のマッピングが確立されます。
3. [アプリケーションでカスタムトークン交換を有効にする](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#enable-custom-token-exchange-for-your-application)。

カスタムトークン交換プロファイルを作成したら、次の手順に進む準備は完了です。

1. API を呼び出す: 必要なパラメーターを含めて、`/oauth/token` エンドポイントに `POST` リクエストを送信できるようになります。これには、`subject_token` と、設定したプロファイルに対応する `subject_token_type` が含まれます。詳しくは、[カスタムトークン交換を使用して API を呼び出す](/docs/ja-jp/get-started/authentication-and-authorization-flow/token-exchange-flow/call-your-api-using-the-custom-token-exchange-flow)をご覧ください。

<div id="learn-more">
  ## 詳しくはこちら
</div>

* [カスタムトークン交換](/docs/ja-jp/authenticate/custom-token-exchange)
* [ユースケースの例](/docs/ja-jp/authenticate/custom-token-exchange/cte-example-use-cases)
* [カスタムトークン交換を設定する](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange)
