エンドポイント
POST /oauth/token
Custom Token Exchange (CTE) は、アプリケーションが /oauth/token エンドポイント を呼び出して、既存のIDトークンをAuth0トークンに交換するための仕組みであり、RFC 8693 の仕様に準拠しています。この機能は、同じユーザーに代わって別のaudienceへアクセスするために既存のAuth0トークンを交換する場合や、外部IDプロバイダーとの統合、Auth0プラットフォームへのシームレスなユーザー移行など、高度な統合要件に対応するうえで重要です。交換プロセスは完全に管理可能で、開発者は関連するユースケース専用のAuth0 Actionで実行されるカスタムロジックを使用して、その詳細を制御できます。
Custom Token Exchange は現在Early Accessとして提供されています。この機能を使用することで、Okta’s Master Subscription Agreement に定める該当のFree Trial条項に同意したものとみなされます。ユーザーの
subject_token を安全に検証する責任はお客様にあります。詳細は User Guide を参照してください。注記
- アプリケーションに発行されるスコープは、要求したスコープと異なる場合があります。その場合、レスポンスJSONにはスコープパラメータが含まれます。スコープは、アプリケーション向けAPIアクセスポリシーで説明されているとおりにフィルタリングされます。
-
MFAは、
setActor()でactorが設定されたトランザクションには対応していません。その場合、リクエストは次の400エラーを返します。MFA is not supported using actor_token with the requested token exchange profile. -
Actionが
setActor()を呼び出すと、発行されるアクセストークンとID トークンには、委譲チェーンを表すactクレームが含まれます。actクレームはuserinfoレスポンスにも含まれます。 -
アクセストークンではなくSession Transfer Tokenを要求するには、
audienceをurn:YOUR_AUTH0_TENANT_DOMAIN:session_transferに設定します。このリクエストではsetActor()の呼び出しが必要です。生成されたトークンを使用してsubjectユーザーに代わってセッションを確立する方法については、セッション委譲を参照してください。 -
発行されるトークンに標準クレーム (
emailなど) を含めるには、Actionでクレームを明示的に設定している場合でも、対応するスコープ (email) をリクエストに含める必要があります。詳細については、OpenID Connect スコープ: 標準クレームを参照してください。 -
カスタムトークン交換ではagent actorは追加されません。Agents as Principalが有効な場合でも、
actクレームはsetActor()を介してActionが完全に制御します。Auth0がこのグラントに対してagentactを自動的に追加することはありません。
ヘッダー
string
リクエストの DPoP プルーフです。これは任意で、アプリケーションで Demonstrating Proof-of-Possession を使用している場合にのみ必要です。
string
エンドユーザーの IP を文字列で指定します。サーバーサイドのシナリオで Suspicious IP Throttling 保護を有効にしたい場合は、これを設定してください。
Body Parameters
リクエスト本文は
application/x-www-form-urlencoded 形式です。string
必須
使用するフローを示します。カスタムトークン交換 の場合は、
urn:ietf:params:oauth:grant-type:token-exchange を使用します。使用可能な値: urn:ietf:params:oauth:grant-type:token-exchangestring
必須
subject token の種類です。カスタムトークン交換 では、
http://acme.com/legacy-token や urn:acme:legacy-token のように、自身が所有する名前空間配下の任意の URI を使用できます。次の名前空間は予約されているため、使用できません: http://auth0.com, https://auth0.com, http://okta.com, https://okta.com, urn:ietf, urn:auth0, urn:okta.string
必須
subject token です。このトークンは、action で検証し、ユーザーの識別に使用する必要があります。
string
必須
アプリケーションの Client ID です。他の grant type と同様に、HTTP Basic Auth を使用して Authorization ヘッダーで client ID を渡すこともできます。
string
(任意) アプリケーションの Client Secret です。他の grant type と同様に、HTTP Basic Auth を使用して Authorization ヘッダーで client secret を渡すこともできます。また、Auth0 Authentication API reference docs で説明されているとおり、ほかの方法も利用できます。カスタムトークン交換 はパブリックなアプリケーションでも使用できるため、追加のセキュリティ対策の実装については Attack Protection を参照してください。
string
(任意) アクセス先の対象 API を一意に識別する子です。指定しない場合は、Tenant Settings で設定されたデフォルトのテナント audience が使用されます。アクセストークンの代わりに、委任されたセッションを確立するための Session Transfer Token をリクエストするには、
urn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer を使用します。string
(任意) アクセス先の対象 API (resource server) の識別子です。Auth0 テナントに登録されている API Identifier と一致している必要があります。テナントの Resource Parameter Compatibility Profile が
compatibility に設定されている場合、audience の代わりに使用されます。string
(任意) OAuth2 のスコープパラメータです。
string
(任意) リクエストに関連付ける organization またはその識別子です。あるいは、Use Organization Names in Authentication API が設定されている場合は、organization 名を指定することもできます。
string
(任意) subject user に代わって委譲を行う actor を識別するトークンです。
actor_token_type とあわせて指定する必要があります。指定した場合、リフレッシュトークン は発行されません。string
(任意) actor token の種類です。
actor_token とあわせて指定する必要があります。Auth0 ID トークン の場合は、サーバー側での自動検証 (署名、有効期限、issuer、ユーザー検索) のために urn:ietf:params:oauth:token-type:id_token を使用します。それ以外の値については、subject_token_type と同じ名前空間の制限に従ってください。