Requesting App側からXAAフロー全体を構築してテストする場合:まず環境の設定とOktaをOIDC IdPとして使用するを完了してから、このページに戻ってテストアプリケーションを構成してください。すでにToken Vaultを設定済みで、XAAのサポートを追加する場合:既存のToken Vault連携にXAAを追加するに進んでください。
XAA では何が異なるのか?
- Token Vault を XAA と組み合わせて使用する場合、エンドユーザーが外部アプリケーションとアカウントを接続する必要はありません。My Account API の
/me/v1/connected-accounts/connectエンドポイントにPOSTリクエストを送信する「[サードパーティアプリケーション]に接続」ボタンをアプリケーション側に用意する必要もありません。 - エンドユーザーは、XAA 用に構成された Okta または OIDC 接続によるフェデレーションログインで認証する必要があります。その接続は Requesting App として構成されている必要があります。
- アクセス先となるサードパーティ API は、Resource App として XAA をサポートしている必要があります。つまり、
ID-JAGをアクセストークンと交換できることが条件となります。 - Connected Accounts for Token Vault と Cross App Access for Token Vault が有効化された状態で、サードパーティアプリケーションへの接続が存在している必要があります。
既存の Token Vault 連携に XAA を追加する
このセクションでは、既存の接続で XAA を有効にするために必要な Auth0 側の変更のみを説明します。これらの接続を初めて作成する場合や、Okta 側の設定が必要な場合は、OktaをOIDC IdPとして使用する を参照して、エンドツーエンドのセットアップを行ってください。
Requesting Appの接続を構成する
ID-JAGを要求するように構成する必要があります。接続には、Okta WorkforceまたはOIDCの接続を使用できます。
- Auth0 Dashboard
- Management API
- [Authentication] > [Enterprise] に移動し、対象の接続を選択して設定を開きます。
- [Credentials] で、[Communication Channel] を [Back Channel] に設定します。Token Vaultは、フロントチャネルを使用してID-JAGを要求することはできません。
- [Settings] > [Scopes] で、
offline_accessを追加します。 - [Mappings] で [Okta Basic] を選択し、JSONマッピングの
userinfo_scopeリストにoffline_accessを追加します。[Save] を選択します。 - [Cross App Access] > [Cross App Access Role] で、[Requesting Application] を選択します。

- [Save] を選択します。
Resource App の接続を構成する
- Auth0 Dashboard
- Management API
- [Authentication] > [Enterprise] に移動し、サードパーティ API への OIDC 接続を選択して、その設定を開きます。
- [Purpose] で、[Connected Accounts for Token Vault] または [Authentication and Connected Accounts for Token Vault] を選択します。
- [Cross App Access] で、以下を設定します。
- [Cross App Access Roles] で、[Requesting Application] を有効にします。
- [Cross App Access for Token Vault] を有効にします。

- [Save] を選択します。
テストアプリケーションを構成する
Token Vault グラントタイプを使用できるのは、コンフィデンシャルかつファーストパーティで、OIDC 準拠のクライアントのみです。従来型Webアプリケーションはこれらの要件を満たしています。
- Auth0 Dashboard
- Management API
- Application URIs で、アプリケーションのコールバック URL (例:
https://localhost:3000/callback) を Allowed Callback URLs に追加します。 - Cross App Access で、Allow Cross App Access を有効にします。
- Advanced Settings > Grant Types で、認可コード、リフレッシュトークン、Token Vault を有効にします。
- 変更を保存 を選択します。
アプリケーションでOkta接続を有効化する
- Auth0 Dashboard
- Management API
Okta Workforce接続またはRequesting App接続を有効化するには:
- [Authentication] > [Enterprise] > [Okta Workforce] に移動し、Okta Workforce接続を選択して、[Applications] タブを選択します。次に、作成したテスト用アプリケーションで有効化します。
- [Authentication] > [Enterprise] > [OpenID Connect (OIDC)] に移動し、OIDC接続を選択して、[Applications] タブを選択します。次に、作成したテスト用アプリケーションで有効化します。
エンドツーエンドのフローをテストする
- Okta Workforce接続またはRequesting Appの接続で認可コードフローを完了し、Auth0のリフレッシュトークンを取得する。
- Token VaultグラントタイプまたはResource Appの接続を使用して、OIDC接続でResource Appのアクセストークンとリフレッシュトークンを交換する。
ステップ1:Auth0のリフレッシュトークンを取得する
GET リクエストを、ご自身の値に置き換えたうえで Auth0 の /authorize エンドポイントに送信します。
テストユーザーは認証のためにOktaにリダイレクトされます。ログインに成功すると、Auth0はクエリ文字列に認可
code を付与して redirect_uri へリダイレクトします。
Auth0 の /oauth/token エンドポイントに POST リクエストを送信し、認可コードをトークンと交換します。
成功した場合のレスポンスには、
refresh_tokenが含まれます。
ステップ 2: Token Vault でリフレッシュトークンを交換する
Token VaultはXAA flowを使用して、Resource Appへのアクセストークンを取得します。具体的には、有効なRequesting App IdPから保存済みのリフレッシュトークンを検索し、そのIdPにユーザーの代わりに
ID-JAGトークンを要求します。次に、そのトークンをResource Appに提示してアクセストークンと交換し、取得したアクセストークンをアプリに返します。
リクエストが成功すると、Resource Appのアクセストークンが返されます:
複数の Requesting App IdP に対応する
cross_app_access_requesting_app.active プロパティが true に設定されている) IdP への接続が多数構成されていることがあります。
アプリケーションがトークン交換リクエストを行う際、Token Vault が ID-JAG を要求できるのは、ユーザーがすでに認証を済ませている IdP に対してのみです。そのため、ユーザーを認証する接続で XAA が有効になっている有効なユーザーアイデンティティが、現在のユーザーのプロファイルにちょうど 1 つだけリンクされている必要があります。そうでない場合、Token Vault はどの IdP に ID-JAG を要求すればよいか判断できません。有効なアイデンティティが複数ある場合、リクエストは次のエラーで失敗します。
Auth0 Organizations を XAA で使用する
subject_token には、それぞれユーザーがログインした組織に関する情報が含まれています。この組織コンテキストをもとに、適切な XAA Requesting App の接続が特定されます。ただし、有効な接続が複数見つかった場合は、リクエストは失敗します。