Authorization ヘッダーに渡されるのは Auth0 アクセストークンのみです。バックエンド API は SPA に発行されたリフレッシュトークンを受け取らないため、外部 API を呼び出すために Token Vault にアクセスする リフレッシュトークン交換 は使用できません。
代わりに、バックエンド API は SPA から受け取った Auth0 アクセストークンを外部プロバイダーのアクセストークンと交換できます。これがアクセストークン交換です。このプロセスにより、機密性の高い外部の資格情報をバックエンド側で安全に保護できます。
Auth0 のアクセストークン交換では、バックエンド API はクライアントとリソースサーバーの両方の役割を果たします。
- クライアント: 自身の資格情報を使用して、Auth0 Authorization Server とのアクセストークン交換を安全に実行します。Auth0 では、バックエンド API と同じ識別子を持つカスタム API クライアントを作成します。バックエンド API は、カスタム API クライアントの資格情報を渡して、Auth0 Authorization Server とのアクセストークン交換を安全に実行します。
- リソースサーバー: SPA にバックエンド API を提供し、Auth0 アクセストークンを検証します。
利用例
- バックエンド API: ユーザーが SPA を操作し、その後、バックエンド API が Auth0 Authorization Server に対して、Auth0 アクセストークンを外部プロバイダーのアクセストークンに交換するためのリクエストを送信します。
- マイクロサービス アーキテクチャ: 外部 API にアクセスするためにアクセストークンの交換が必要な、MCP サーバーやその他の OAuth 2.0 リソースサーバーなどのバックエンドサービス。
仕組み

前提条件
ステップ 2: SPA が Auth0 アクセストークンを使用してバックエンド API を呼び出す
Authorization ヘッダーに Auth0 アクセストークンを設定してバックエンド API に渡します。バックエンド API は、次の点を確認して Auth0 アクセストークンを検証します。
- 署名: Auth0 の公開キーを使用してトークンの署名を検証します。これにより、そのアクセストークンが Auth0 によって発行されたことを確認できます。
- 発行者: トークンのペイロード内の
issクレームを確認し、そのトークンがあなたの Auth0 テナントによって発行されたことを確かめます。 - Audience:
audクレームを確認し、それがバックエンド API 自体の一意の識別子と一致することを確かめます。これにより、そのトークンがこのリソースサーバー向けに発行されたものであることを確認できます。 - 有効期限:
expクレームを検証し、そのトークンがまだ有効であり、期限切れになっていないことを確認します。 - スコープ:
scopeクレームを確認し、ユーザーにどの permissions が付与されているかを判断します。
ステップ 3: バックエンド API がアクセストークン交換を実行する
/oauth/token エンドポイントに POST リクエストを送信します。
トークンリクエストでは、バックエンド API は次のことを行います。
- 自身を認証するために、バックエンド API (カスタム API クライアント) のクライアント資格情報を Auth0 Authorization Server に渡します。
- Auth0 アクセストークンを Google アクセストークンと交換します。
Auth0 Authorization Server は、Auth0 アクセストークンに関連付けられたユーザープロファイルを検証し、読み込みます。
- Auth0 は、トークン交換リクエストを行うクライアントが、アクセストークンの
audienceで識別されるバックエンド API にリンクされていることを確認します。 - Auth0 は、ユーザープロファイルの
connected_accountsarray に、認可リクエストで渡された接続名を持つユーザーアカウントが含まれているかどうかを確認します。 - 認可リクエストに
login_hintが含まれている場合、Auth0 は接続名とlogin_hintの両方に一致する ID を探します。 - Auth0 がユーザーを見つけられない場合、エラーメッセージとともに
401ステータスコードを返します。