カスタムトークン交換とToken Vaultの併用は、ユーザーストアを移行せずにAIエージェントを利用可能にするための暫定的なソリューションです。Auth0は近日中に、ID-JAG(Cross App Access)を基盤とするネイティブソリューションに対応する予定です。これにより、カスタムトークン交換を独自に実装しなくても、アプリ間の認可を標準化できるようになります。
アーキテクチャの概要
前提条件
- Auth0テナント:アクティブなテナント。マルチテナントまたはB2B構成を使用している場合は、Organizationsを有効にしておく必要があります。
- ユーザーIdPの機能:署名付きのOIDC IDトークンまたはJWTアサーションを発行できるプライマリIDプロバイダー。署名検証用に、公開JWKSエンドポイントまたは静的キーが用意されている必要があります。
- サードパーティ開発者の認証情報:AIエージェントがアクセスする各ダウンストリームプロバイダー (GitHub、Google Workspace、Salesforceなど) の有効なクライアント認証情報 (クライアントIDとクライアントシークレット) 。
- テナント管理者のアクセス権:Auth0テナント内でクライアントアプリケーションの作成、OAuth接続の構成、カスタムトークン交換アクションの導入を行える権限。
ステップ 1: セットアップとアプリケーションの登録
アプリケーションを登録して設定する
Applications > Applications に移動し、アプリケーションを作成します。作成したアプリケーションは、カスタムトークン交換を有効にした、ファーストパーティかつコンフィデンシャルな OIDC 準拠アプリケーションとして設定します。- アプリケーションの Allow Refresh Token Rotation を無効にします。トークンを繰り返し取得する際には同じ subject token を再利用するため、ローテーションを有効にするとダウンストリームへのアクセスが機能しなくなります。
- Advanced Settings > Grant Types で、Refresh Token と Token Vault が選択されていることを確認します。
- APIs > Auth0 My Account API で、以下のスコープを指定して、アプリケーションに My Account API (マルチリソースリフレッシュトークンで取得) へのアクセスを許可します。
read:me:connected_accountscreate:me:connected_accountsdelete:me:connected_accounts
ダウンストリームOAuth接続を登録する
AIエージェントがアクセスする必要のあるサードパーティのプロバイダーごとに、以下の手順を実行します。- Authentication > SocialまたはAuthentication > Enterpriseに移動します。
- プロバイダーの開発者ポータルで取得した資格情報を使用して、接続を追加します。
- Purposeで、接続のConnected Accounts for Token Vaultを有効化します。
- Permissionsで
Offline Accessを選択します。これにより、クライアントアプリケーションが外部プロバイダーからリフレッシュトークンを取得できるようになります。 - 接続のApplicationsタブで、登録済みのアプリケーションを有効にします。
ステップ2:カスタムトークン交換アクションを構成する
カスタムトークン交換トリガー (onExecuteCustomTokenExchange) を使用して、Actions > Library > Customで新しいアクションを作成します。このアクションは、ユーザーIdPが発行したトークンを検証し、Auth0にシャドウユーザープロファイルを作成します。必要に応じて、アクセストークンのスコープをAuth0 Organizationに限定することもできます。
subject_token_type をこのアクションに紐付けます。URN には予約済みの名前空間 (urn:ietf、urn:auth0、urn:okta など) を使用できません。