7.2.2. リクエストの作成

クライアントが既存の内部トークンを外部に交換する場合には、requested_issuer パラメーターを指定する必要があります。このパラメーターは、設定済みのアイデンティティープロバイダーのエイリアスである必要があります。

curl -X POST \
    -d "client_id=starting-client" \
    -d "client_secret=geheim" \
    --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
    -d "subject_token=...." \
    --data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \
    -d "requested_issuer=google" \
    http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token

subject_token パラメーターは、ターゲットレルムのアクセストークンである必要があります。requested_token_type パラメーターは urn:ietf:params:oauth:token-type:access_token であるか、空欄のままにする必要があります。現時点では、他の要求されたトークンタイプはサポートされません。以下は、この呼び出しから返される正常な JSON 応答の例です。

{
   "access_token" : "....",
   "expires_in" : 3600
   "account-link-url" : "https://...."
}

外部 ID プロバイダーが何らかの理由でリンクされていない場合、以下の JSON ドキュメントで HTTP 400 応答コードが表示されます。

{
   "error" : "....",
   "error_description" : "..."
   "account-link-url" : "https://...."
}

error 要求は、token_expired または not_linked のいずれかになります。クライアントが「クライアント開始アカウントリンク」を実行できるように、account-link-url 要求が提供されます。ほとんどの (またはすべての) プロバイダーは、ブラウザー OAuth プロトコルを使用したリンクを必要とします。account-link-url では、単に redirect_uri クエリーパラメーターを追加し、ブラウザーに転送してリンクを実行できます。