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

レルムトークンを、外部 ID プロバイダーによって作成された外部トークンと交換できます。この外部 ID プロバイダーは、管理コンソールの ID プロバイダー セクション内で設定する必要があります。現時点で、OAuth/OpenID Connect ベースの外部 ID プロバイダーのみがサポートされます。これには、すべてのソーシャルプロバイダーが含まれます。Red Hat Single Sign-On は、外部プロバイダーへのバックチャネル交換を実行しません。そのため、アカウントがリンクされていない場合は、外部トークンを取得できなくなります。これらの条件の 1 つの外部トークンを取得できるようにするには、以下の条件を満たしている必要があります。

  • ユーザーは、少なくとも 1 回、外部 ID プロバイダーを使用してログインしている必要があります。
  • ユーザーは、ユーザーアカウントサービスを使用して、外部 ID プロバイダーとリンクされている必要があります。
  • このユーザーアカウントは、「クライアント開始アカウントリンク」 API を使用して外部の ID プロバイダー経由でリンクされました。

最後に、外部 ID プロバイダーがトークンを保存するように設定されている必要があります。または、上記のアクションの 1 つが、交換する内部トークンと同じユーザーセッションで実行されている必要があります。

アカウントがリンクされていない場合、交換応答には、アカウントを確立するために使用できるリンクが含まれます。詳細は、「リクエストの作成」セクションで説明されています。

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

内部から外部へのトークン交換要求は、外部 ID プロバイダーとトークンを交換できるパーミッションを呼び出し元のクライアントに付与するまで、403、Forbidden 応答で拒否されます。クライアントにパーミッションを付与するには、ID プロバイダーの設定ページの Permissions タブに移動する必要があります。

ID プロバイダーパーミッション

exchange idp permission unset

Permissions Enabled スイッチを true に切り替えます。

ID プロバイダーパーミッション

exchange idp permission set

ページに token-exchange リンクが表示されます。それをクリックして、パーミッションの定義を開始します。このページが作成されます。

アイデンティティープロバイダー交換のパーミッション設定

exchange idp permission setup

このパーミッションのポリシーを定義する必要があります。Authorization リンクをクリックし、Policies タブに移動し、Client ポリシーを作成します。

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

exchange idp client policy

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

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

exchange idp apply policy

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