7.2. 内部トークンから内部トークンへの交換


内部のトークンからトークンへの交換では、特定のクライアントに作成された既存のトークンがあり、このトークンを別のターゲットクライアントに作成された新しいトークンと交換する必要があります。これを実行する理由これは通常、クライアントが自身のために作成したトークンを持っており、アクセストークン内で異なるクレームとパーミッションを必要とする他のアプリケーションに追加の要求を行う必要がある場合に発生します。このタイプの交換が必要となるかもしれないその他の理由は、アプリが信頼性の低いアプリで呼び出す必要があり、現在のアクセストークンを伝播したくない場合のパーミッションのダウングレードを実行する必要がある場合です。

7.2.1. 交換のパーミッションの付与

別のクライアントのトークンを交換する必要のあるクライアントは、管理コンソールで認可される必要があります。交換するパーミッションを付与するクライアントに、token-exchange の細かいパーミッションを定義する必要があります。

ターゲットクライアントパーミッション

Target Client Permission

手順

  1. Permissions EnabledON に切り替えます。

    ターゲットクライアントパーミッション

    exchange target client permission set

    そのページには、token-exchange のリンクが表示されます。

  2. そのリンクをクリックして、パーミッションの定義を開始します。

    このセットアップページが表示されます。

    ターゲットクライアント交換のパーミッション設定

    Target Client Exchange Permission Setup

  3. Authorization のリンクをクリックして、このパーミッションのポリシーを定義します。
  4. Policies タブをクリックします。
  5. クライアントポリシーを作成します。

    クライアントポリシーの作成

    exchange target client policy

  6. トークン交換を要求する認証されたクライアントである、開始クライアントを入力します。
  7. このポリシーを作成したら、ターゲットクライアントの token-exchange パーミッションに戻り、定義したクライアントポリシーを追加します。

    クライアントポリシーの適用

    exchange target client exchange apply policy

これでクライアントを呼び出すパーミッションがある。これを正しく行わないと、エクスチェンジを作成しようとすると、403 Forbidden 応答が返されます。

7.2.2. リクエストの作成

クライアントが、既存のトークンを他のクライアントをターゲットにしたトークンと交換する場合は、audience パラメーターを使用します。このパラメーターは、管理コンソールで設定したターゲットクライアントのクライアント識別子である必要があります。

curl -X POST \
    -d "client_id=starting-client" \
    -d "client_secret=the client secret" \
    --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:refresh_token" \
    -d "audience=target-client" \
    http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token
Copy to Clipboard

subject_token パラメーターは、ターゲットレルムのアクセストークンである必要があります。requested_token_type パラメーターが更新トークンタイプである場合、応答にはアクセストークン、更新トークン、および有効期限が含まれます。以下は、この呼び出しから返される JSON 応答の例です。

audience パラメーターが設定されていない場合に、パラメーターの値はデフォルトでトークン交換要求を行うクライアントに設定されます。

機密クライアントとは異なり、パブリッククライアントは他のクライアントからのトークンを使用してトークン交換を実行することはできません。subject_token を指定する場合には、トークンを発行した (機密の) クライアントと、リクエストを行ったクライアントが同じである必要があります。別のクライアントに対して発行された場合には、リクエストを行ったクライアントは、トークンに設定されたオーディエンスに含まれている必要があります。

ターゲットの audience (要求を行うクライアントとは別のクライアント) を明示的に設定する場合に、token-exchange のスコープのパーミッションを audience パラメーターに指定されたクライアントに設定して、クライアントが要求を出して交換が正常に完了するようにしてください。

{
   "access_token" : "....",
   "refresh_token" : "....",
   "expires_in" : 3600
}
Copy to Clipboard
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat