POST /oauth/token
Token Vault を使用すると、アプリケーションは Auth0 トークンを外部プロバイダーのアクセストークンと交換し、ユーザーに代わって外部 API を呼び出せます。この交換は OAuth 2.0 Token Exchange (RFC 8693) に基づいており、urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token グラントタイプを使用します。
このグラントには、送信する subject_token のみが異なる 2 つのバリエーションがあります。
- リフレッシュトークン交換: Auth0 リフレッシュトークンを外部プロバイダーのアクセストークンと交換します。アプリケーションが Auth0 リフレッシュトークンを保持している場合に使用します。詳細については、Token Vault を使用したリフレッシュトークン交換を参照してください。
- アクセストークン交換: Auth0 アクセストークンを外部プロバイダーのアクセストークンと交換します。シングルページアプリケーションなどからバックエンド API が Auth0 アクセストークンのみを受け取る場合に使用します。詳細については、Token Vault を使用したアクセストークン交換を参照してください。
注記
- 交換を実行する前に、Token Vault の接続を設定し、My Account APIを使用する Connected Accounts フローを通じて、ユーザーの外部アカウントを接続する必要があります。
-
リフレッシュトークン交換では、
subject_token_typeをurn:ietf:params:oauth:token-type:refresh_tokenに設定します。Token Vault はリフレッシュトークンのローテーションをサポートしていないため、Auth0 Dashboard でアプリケーションの Allow Refresh Token Rotation を無効にする必要があります。セキュリティをさらに強化するため、DPoP を使用して、Auth0 が発行したトークンをクライアントにバインドできます。 -
アクセストークン交換では、
subject_token_typeをurn:ietf:params:oauth:token-type:access_tokenに設定します。バックエンド API と同じ識別子を持ち、Token Vault のグラントタイプが有効になっているカスタム API クライアントを作成する必要があります。バックエンド API は、カスタム API クライアントの資格情報を使用して認証されます。 -
発行されるスコープは、外部アカウントに付与されたスコープと異なる場合があります。この場合、応答 JSON には
scopeフィールドが含まれます。 -
Auth0 は、
connection(および指定されている場合はlogin_hint) に一致するユーザーアイデンティティが見つからない場合、401ステータスコードを返します。
ヘッダー
string
request に対する DPoP proof。任意ですが、アプリケーションで Demonstrating Proof-of-Possession を使用する場合にのみ必要です。
string
エンドユーザーの IP アドレスを文字列値で指定します。Server-side のシナリオで 不審な IP スロットリング 保護を有効にする場合に設定します。
リクエストボディ
string
必須
使用するフローを指定します。Token Vault では、
urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token を使用します。string
必須
サブジェクトトークンの種類です。リフレッシュトークン交換では、
urn:ietf:params:oauth:token-type:refresh_token を使用します。アクセストークン交換では、urn:ietf:params:oauth:token-type:access_token を使用します。string
必須
Auth0 認可サーバーがユーザーを識別するために検証する Auth0 トークンです。リフレッシュトークン交換では Auth0 リフレッシュトークン、アクセストークン交換では Auth0 アクセストークンを指定します。
string
必須
返却を求めるトークンの種類を指定します。Token Vault では、
http://auth0.com/oauth/token-type/federated-connection-access-token を使用します。string
必須
外部プロバイダーとの接続名です。たとえば、
google-oauth2 です。string
必須
アプリケーションの Client ID です。アクセストークン交換では、カスタム API クライアントの Client ID です。他のグラントタイプと同様に、HTTP Basic Auth を使用して Authorization ヘッダーで Client ID を渡すこともできます。
string
(任意) アプリケーションの Client Secret です。外部プロバイダーのアクセストークンを取得するには、任意のクライアント認証方法を使用できます。他のグラントタイプと同様に、HTTP Basic Auth を使用して Authorization ヘッダーで Client Secret を渡すこともできます。代替方法については、Auth0 Authentication API リファレンスドキュメントを参照してください。
string
(任意)
login_hint は、職場用と個人用の Google アカウントなど、ユーザーが同じ接続に複数のアカウントを持つ場合にのみ使用してください。トークン交換時に login_hint に値を渡すと、リクエストの対象となるユーザーのリンク済みアカウントを明示的に指定できます。レスポンス
レスポンスフィールド
string
外部プロバイダーのアクセストークンです。このトークンを使用して、ユーザーに代わって外部プロバイダーのAPIを呼び出します。
string
外部プロバイダーのアクセストークンに付与されたスコープのスペース区切りリストです。
number
アクセストークンの有効期間 (秒) です。
string
返されるトークンの形式を示します。値:
http://auth0.com/oauth/token-type/federated-connection-access-tokenstring
Authorizationヘッダーで使用する認証スキームを指定します。Token Vaultでは
Bearerです。