メインコンテンツへスキップ
Custom Token Exchange (CTE) は現在、Auth0 B2C Professional、B2B Professional、および Enterprise のすべてのお客様に Early Access で提供されています。この機能を使用することで、Okta’s Master Subscription Agreement に記載されている該当する Free Trial 条項に同意したものとみなされます。Auth0 の製品リリースサイクルの詳細については、Product Release Stages を参照してください。サブスクリプション種別の詳細については、Auth0 の pricing ページを確認してください。
Auth0 認可サーバーが Custom Token Exchange リクエストの有効性を検証し、それが既存の Custom Token Exchange Profile に対応していることを確認すると、custom-token-exchange トリガーによって、そのプロファイルに関連付けられた 1 つの Action が実行されます。Action が正常に完了し、トランザクションにユーザーが設定されると、その後 post-login Actions と Auth0 パイプラインの残りの処理が、そのログイン済みユーザーに対して実行されます。
このフローの Actions はブロッキング (同期) です。つまり、トリガー処理の一部として実行され、Action が完了するまで Auth0 パイプラインの残りの処理は実行されません。

Custom Token Exchange と Post Login Actions

トランザクションに設定したユーザーに対しては、Custom Token Exchange Action の実行後に Post Login Actions トリガーが実行されます。その他のユースケース (たとえば、アクセストークンにカスタムクレームを追加する場合) では、Post Login Action トリガーを使用してください。 Custom Token Exchange では、トークン交換のグラントタイプを使用します。この場合、Post Login Action トリガーの event.transaction.protocoloauth2-token-exchange に設定されます。Custom Token Exchange とネイティブソーシャルログインは、どちらもトークン交換のグラントタイプを使用します。両者を区別するには、subject_token_type の値を使用します。この値は、いずれかの Custom Token Exchange Profile に対応している必要があります。
Custom Token Exchange Early Access では、api.authentication.challengeWith()api.authentication.enrollWith() はサポートされていません。Post-Login Actions でこれらのメソッドを使用すると、トランザクションは回復不能なエラーで失敗します。subject_token_type の値に応じて、event.transaction.protocol==oauth2-token-exchange の場合は、これら 2 つのメソッドをスキップするようにしてください。

委任におけるアクターのサポート

custom-token-exchange トリガーは、委任された認可のシナリオをサポートします。Action は api.authentication.setActor() を呼び出して、発行されるトークンに act クレームを含めることができます。これにより、対象ユーザーに代わって動作する主体を識別できます。 setActor() は、リクエストに actor_token が含まれているかどうかにかかわらず呼び出せます。actor_token パラメーターは、呼び出し元のアプリケーションがアクター情報を Action に渡す方法の 1 つですが、アクターの識別情報は subject_token 自体に埋め込むことも、Action コード内で別のカスタムな方法を使って取得することもできます。 リクエストに actor_tokenactor_token_type が含まれている場合、これらの値は event.transaction で利用できます。actor_token_typeurn:ietf:params:oauth:token-type:id_token で、そのトークンが同じテナントの有効な Auth0 IDトークンである場合、サーバーは自動的にトークンを検証し、アクターのユーザープロファイルを event.transaction.actor_token_user に設定します。 setActor() で設定した act クレームは、event.transaction.actor を通じて Post-Login Actions でも利用できます。

トリガー

Custom Token Exchange

custom-token-exchange トリガーは、Auth0 パイプラインの最初のステップです。この関数は、受信したCustom Token Exchangeリクエストが検証され、既存のユーザープロファイルに正常にマッピングされた後に実行されます。

参考資料

  • イベントオブジェクト: subject_token、IP アドレス、クライアントなど、Token Exchange リクエストに関するコンテキスト情報を提供します。
  • API オブジェクト: Token Exchange Action で使用できるメソッドを提供します。これにより、ユーザーの指定、委任用アクターの設定、トランザクションの拒否、ユーザーメタデータの設定、Actions キャッシュへのアクセスなどを行えます。

一般的なユースケース

一般的なCustom Token Exchangeのユースケースについては、ユースケースの例を参照してください。