Skip to main content
カスタムトークン交換を使用すると、RFC 8693 で定義されているとおり、アプリケーションは /oauth/token エンドポイントの呼び出し時に、既存のトークンを Auth0 トークンに交換できます。カスタムトークン交換の一般的なユースケースには、次のようなものがあります。
  • 別の 向けの Auth0 トークンを取得する
  • 外部の と連携する
  • Auth0 に移行する
  • 委任された認可: プリンシパル (サービス、AI エージェント、サポート担当者など) がユーザーに代わって動作する
詳しくは、使用例とコードサンプル をご覧ください。
カスタムトークンのバリデーション要件がなく、自社サービス間で委譲コンテキストを伝達するだけでよい場合は、代わりに On-Behalf-Of Token Exchange を使用してください。これはリクエストごとにカスタム Action を実行せず、大幅に高いスループットをサポートします。カスタム形式のサブジェクトトークンまたはアクタートークンをバリデーションする必要がある場合、外部のアイデンティティプロバイダーと連携する場合、または交換ロジックを完全に制御する必要がある場合は、カスタムトークン交換を使用してください。
各カスタムトークン交換リクエストは、Action によって制御される Custom Token Exchange Profile にマッピングされます。ここでは、次のことができます。
  • /oauth/token エンドポイントに渡される subject_tokens をデコードしてバリデーションするカスタムコードを記述する
  • アクセスを認可し、トランザクションを続行するユーザーを設定する。
1 つのアプリケーションに対して、複数の Custom Token Exchange Profile を設定 できます。Auth0 Authorization Server がカスタムトークン交換リクエストの有効性を検証し、既存の Custom Token Exchange Profile にマッピングすると、Custom Token Exchange トリガー によって、そのプロファイルに関連付けられた 1 つの Action が実行されます。その後、アプリケーションはカスタムトークン交換を利用して、ユーザーを認証し、そのユーザーの Auth0 のアクセストークン、ID トークン、リフレッシュトークンを取得できます。
カスタムトークン交換では、トランザクション上のユーザーを識別する対応するサブジェクトトークンを安全にバリデーションするという追加の責任を負う代わりに、トランザクションのユーザーを設定できる柔軟性が得られます。カスタムトークン交換で使用するサブジェクトトークンとアクタートークンは、Action コードで解釈できる限り、必要に応じて任意のトークン形式またはタイプにできます。受け取って受け入れるトークンには、必ず強固なバリデーションを実装してください。 これを怠ると、なりすましやリプレイ攻撃など、さまざまな攻撃ベクトルにさらされ、悪意のある第三者が他人の user ID で認証したり、許可なくその人の代理として行動したりできるようになります。サブジェクトトークンの安全なバリデーションを実装するためのさまざまな方法については、使用例とコードサンプル に記載されている推奨事項を確認し、適用してください。また、攻撃対策 機能についても考慮し、適用してください。

テナントログ

各カスタムトークン交換トランザクションで、テナントのイベントログが生成されます。
  • 成功したトランザクション: secte ログ
  • 失敗したトランザクション: fecte ログ
setActor() を使用して actor を設定すると、監査のため、sub とネストされた actor を含む actor プロパティが secte のログエントリに含まれます。 テナントログは、トークン交換で発生した問題のトラブルシューティングに役立ちます。

制限事項

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