Skip to main content
ユーザーのidentity storeをAuth0に移行することなく、Token Vaultをアプリケーションに統合できます。プライマリ認証は、カスタム、サードパーティ、ローカルデータベース、B2C/B2Bソリューションのいずれであっても、引き続きユーザーのIDプロバイダー(IdP)が担います。一方、Auth0は自律型AIワークフローのために、サードパーティのOAuthアクセストークンを安全に保存・ローテーション・発行します。 カスタムトークン交換(RFC 8693)を使用して、ユーザーのIdPが発行したトークンをAuth0のトークンと交換し、軽量なジャストインタイム(JIT)シャドウプロファイルをプロビジョニングします。次に、Connected Accountsフローを使用して、サードパーティのプロバイダーアカウントをそのプロファイルにリンクします。これにより、バックエンドやエージェントは、有効期間の長い資格情報を直接扱うことなく、有効期間の短いダウンストリームトークンを必要なときに取得できます。
カスタムトークン交換と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_accounts
    • create:me:connected_accounts
    • delete:me:connected_accounts
次に、Applications > APIs で、対象 API の Allow Skipping User Consent を選択します。

ダウンストリームOAuth接続を登録する

AIエージェントがアクセスする必要のあるサードパーティのプロバイダーごとに、以下の手順を実行します。
  1. Authentication > SocialまたはAuthentication > Enterpriseに移動します。
  2. プロバイダーの開発者ポータルで取得した資格情報を使用して、接続を追加します。
  3. Purposeで、接続のConnected Accounts for Token Vaultを有効化します。
  4. PermissionsでOffline Accessを選択します。これにより、クライアントアプリケーションが外部プロバイダーからリフレッシュトークンを取得できるようになります。
  5. 接続のApplicationsタブで、登録済みのアプリケーションを有効にします。
詳細については、「Connected Accounts for Token Vault」を参照してください。

ステップ2:カスタムトークン交換アクションを構成する

カスタムトークン交換トリガー (onExecuteCustomTokenExchange) を使用して、Actions > Library > Customで新しいアクションを作成します。このアクションは、ユーザーIdPが発行したトークンを検証し、Auth0にシャドウユーザープロファイルを作成します。必要に応じて、アクセストークンのスコープをAuth0 Organizationに限定することもできます。
次に、Management API を使用してカスタムトークン交換プロファイルを作成し、カスタムの subject_token_type をこのアクションに紐付けます。URN には予約済みの名前空間 (urn:ietf、urn:auth0、urn:okta など) を使用できません。

ステップ3:IdPトークンをAuth0 My Account APIのアクセストークンと交換する

アプリケーションのバックエンドからトークン交換リクエスト (RFC 8693) を送信し、ユーザーのOrganizationをスコープとするAuth0 My Account APIのアクセストークンを取得します。
レスポンスには、My Account APIのアクセストークンとリフレッシュトークンが含まれます。 Connected Accountsフローを使用すると、Auth0をユーザーのプライマリーログインに設定しなくても、GitHub、Google Workspace、SalesforceなどのサードパーティOAuthプロバイダーを認可できます。

ステップ5:AIエージェント用のサードパーティトークンを取得する

エージェントは、リフレッシュトークン交換を使って、有効期限内のダウンストリームアクセストークンをToken Vaultから直接取得します。

ステップ6:AIエージェントのツール呼び出しを実行する

取得したプロバイダーのトークンをサードパーティのSDKに渡し、ユーザーに代わってAPI操作を実行します。