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

# カスタムトークン交換

> カスタム Action とトークン交換プロファイルを使用して、既存のセキュリティトークンを Auth0 のアクセストークン、ID トークン、リフレッシュトークンに交換します。

<Card title="Auth0 プランによって利用可否が異なります">
  この機能は、B2C Professional、B2B Professional、Enterprise プランで利用できます。詳しくは、[料金](https://auth0.com/pricing)をご覧ください。
</Card>

カスタムトークン交換を使用すると、[RFC 8693](https://datatracker.ietf.org/doc/html/rfc8693) で定義されているとおり、アプリケーションは `/oauth/token` エンドポイントの呼び出し時に、既存のトークンを Auth0 トークンに交換できます。カスタムトークン交換の一般的なユースケースには、次のようなものがあります。

* 別の <Tooltip tip="Audience: 発行されたトークンの audience の一意な識別子です。トークン内では aud という名前で表され、その値には ID トークンの場合はアプリケーション（Client ID）の ID、アクセストークンの場合は API（API Identifier）の ID が含まれます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=audience">audience</Tooltip> 向けの Auth0 トークンを取得する
* 外部の <Tooltip tip="Identity Provider (IdP): デジタルアイデンティティを保存および管理するサービスです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=identity+provider">アイデンティティプロバイダー</Tooltip> と連携する
* Auth0 に移行する
* 委任された認可: プリンシパル (サービス、AI エージェント、サポート担当者など) がユーザーに代わって動作する

詳しくは、[使用例とコードサンプル](/docs/ja-jp/authenticate/custom-token-exchange/cte-example-use-cases) をご覧ください。

<Tip>
  カスタムトークンのバリデーション要件がなく、自社サービス間で委譲コンテキストを伝達するだけでよい場合は、代わりに [On-Behalf-Of Token Exchange](/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange) を使用してください。これはリクエストごとにカスタム Action を実行せず、大幅に高いスループットをサポートします。カスタム形式のサブジェクトトークンまたはアクタートークンをバリデーションする必要がある場合、外部のアイデンティティプロバイダーと連携する場合、または交換ロジックを完全に制御する必要がある場合は、カスタムトークン交換を使用してください。
</Tip>

各カスタムトークン交換リクエストは、[Action](/docs/ja-jp/customize/actions) によって制御される [Custom Token Exchange Profile](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) にマッピングされます。ここでは、次のことができます。

* `/oauth/token` エンドポイントに渡される `subject_tokens` をデコードしてバリデーションするカスタムコードを記述する
* アクセスを認可し、トランザクションを続行するユーザーを設定する。

1 つのアプリケーションに対して、[複数の Custom Token Exchange Profile を設定](/docs/ja-jp/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) できます。Auth0 Authorization Server がカスタムトークン交換リクエストの有効性を検証し、既存の Custom Token Exchange Profile にマッピングすると、[Custom Token Exchange トリガー](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger) によって、そのプロファイルに関連付けられた 1 つの Action が実行されます。その後、アプリケーションはカスタムトークン交換を利用して、ユーザーを認証し、そのユーザーの Auth0 のアクセストークン、ID トークン、リフレッシュトークンを取得できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  カスタムトークン交換では、トランザクション上のユーザーを識別する対応するサブジェクトトークンを安全にバリデーションするという追加の責任を負う代わりに、トランザクションのユーザーを設定できる柔軟性が得られます。

  カスタムトークン交換で使用するサブジェクトトークンとアクタートークンは、Action コードで解釈できる限り、必要に応じて任意のトークン形式またはタイプにできます。**受け取って受け入れるトークンには、必ず強固なバリデーションを実装してください。** これを怠ると、なりすましやリプレイ攻撃など、さまざまな攻撃ベクトルにさらされ、悪意のある第三者が他人の user ID で認証したり、許可なくその人の代理として行動したりできるようになります。

  サブジェクトトークンの安全なバリデーションを実装するためのさまざまな方法については、[使用例とコードサンプル](/docs/ja-jp/authenticate/custom-token-exchange/cte-example-use-cases) に記載されている推奨事項を確認し、適用してください。また、[攻撃対策](/docs/ja-jp/authenticate/custom-token-exchange/cte-attack-protection) 機能についても考慮し、適用してください。
</Callout>

<h2 id="tenant-logs">
  テナントログ
</h2>

各カスタムトークン交換トランザクションで、テナントのイベントログが生成されます。

* 成功したトランザクション: `secte` ログ
* 失敗したトランザクション: `fecte` ログ

`setActor()` を使用して actor を設定すると、監査のため、`sub` とネストされた `actor` を含む `actor` プロパティが `secte` のログエントリに含まれます。

テナントログは、トークン交換で発生した問題のトラブルシューティングに役立ちます。

<h2 id="limitations">
  制限事項
</h2>

カスタムトークン交換では、次の項目はサポートされていません。

* Post-Login Actions 内の `api.authentication.challengeWith()`、`api.authentication.enrollWith()`、`api.redirect.*`、および `api.prompt.*`
* インポートモードが `ON` のカスタム DB 接続は、`setUserByConnection()` 操作ではサポートされていません
* サードパーティ クライアントおよび OIDC 非準拠クライアント
* 非対話型フローでは同意を取得できないため、対象の API では **ユーザー同意のスキップを許可** を有効にする必要があります。
