custom-token-exchange トリガーは、Auth0 パイプラインの最初のステップです。Auth0 Authorization Server がカスタムトークン交換リクエストを検証し、それが既存のカスタムトークン交換プロファイルにマッピングされていることを確認すると、トリガーはそのプロファイルに関連付けられた 1 つの Action を実行します。Action が正常に完了し、トランザクションのユーザーが設定されると、そのログイン済みユーザーに対して post-login Actions と残りの Auth0 パイプラインが実行されます。

カスタムトークン交換とPost Login Actionsの比較
event.transaction.protocolにはoauth2-token-exchangeが設定されます。カスタムトークン交換とネイティブソーシャルログインは、どちらもトークン交換グラントタイプを使用します。両者を区別するには、subject_token_typeの値を使用します。この値は、いずれかのカスタムトークン交換プロファイルに対応している必要があります。
カスタムトークン交換の早期アクセスでは、
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_token と actor_token_type が含まれる場合、これらの値は event.transaction で利用できます。actor_token_type が urn:ietf:params:oauth:token-type:id_token であり、そのトークンが同じ tenant の有効な Auth0 ID トークンである場合、サーバーは自動的にトークンを検証し、アクターのユーザープロファイルを event.transaction.actor_token_user に設定します。
setActor() で設定された act クレームは、Post-Login Actions でも event.transaction.actor を通じて利用できます。
Auth0 では、コンテキストにアクターを含む Session Transfer Token を発行できるため、別のユーザーの代理として Web セッションを確立できます。詳細については、Session Delegation を参照してください。
参照
- イベントオブジェクト:
subject_token、IPアドレス、クライアントなど、トークン交換リクエストに関するコンテキスト情報を提供します。 - APIオブジェクト: ユーザーの設定、委譲におけるアクターの設定、トランザクションの拒否、ユーザーメタデータの設定、Actionsキャッシュへのアクセスなどを行うための、Token Exchange Actionで使用できるメソッドを提供します。