13.7.3. アーキテクチャー
クライアントポリシーは、Condition、Executor、Profile、および Policy の 4 つのビルディングブロックで構成されます。
13.7.3.1. 条件 リンクのコピーリンクがクリップボードにコピーされました!
条件は、ポリシーが採用されるクライアントと、そのクライアントが採用されるタイミングを決定します。一部の条件は、クライアント要求 (OIDC 認可要求、トークンエンドポイント要求など) で他の条件がクライアント要求時にチェックされる場合に、クライアントの作成/更新時にチェックされます。条件は、指定基準の 1 つが満たされているかどうかを確認します。たとえば、一部の条件では、クライアントのアクセスタイプが機密であるかどうかをチェックします。
この条件は単独で使用できません。これは、後で説明される ポリシー で使用できます。
他の設定可能なプロバイダーと同じ条件を設定できます。設定可能なものは、各条件の性質によって異なります。
以下の条件が提供されます。
- クライアントの作成/更新方法
- 動的クライアント登録 (初期アクセストークンまたは登録アクセストークンで認証されていない、または認証されていない)
- Admin REST API(管理コンソールなど)
たとえば、クライアントの作成時に、このクライアントが初期アクセストークンのない OIDC 動的クライアント登録 (匿名動的クライアント登録) で作成される場合に、条件が true に評価されるように設定できます。そのため、この条件は、たとえば、OIDC 動的クライアント登録により登録されたすべてのクライアントを FAPI または OAuth 2.1 に準拠させるために使用できます。
- クライアントの作成者 (特定のロールまたはグループに存在するかどうかで確認)
- OpenID Connect 動的クライアント登録では、クライアントの作成者は、認証済みのエンドユーザーで、アクセストークンを使用して登録エンドポイントに実際にアクセスする既存のクライアントのサービスアカウントではなく、新しいクライアントを生成するためのアクセストークンを取得できます。Admin REST API による登録では、クライアントの作成者は Red Hat build of Keycloak の管理者のようなエンドユーザーです。
- クライアントアクセスタイプ (機密、パブリック、bearer のみ)
- たとえば、クライアントが認可要求を送信すると、このクライアントが機密である場合はポリシーが採用されます。パブリッククライアントがクライアント認証を無効にしている場合、機密クライアントはクライアント認証を有効にしています。Bearer-only は非推奨のクライアントタイプです。
- クライアントスコープ
-
クライアントに固有のクライアントスコープがある場合 (デフォルトまたは現在のリクエストで使用される任意のスコープ) は、true と評価します。たとえば、スコープが
fapi-example-scopeの OIDC 認可要求が FAPI に準拠する必要があることを確認できます。 - クライアントロール
- 指定の名前のクライアントロールが割り当てられたクライアントに適用されます。通常、要求されたクライアントに対して指定された名前のクライアントロールを作成し、それを "マーカーロール" として使用して、要求されたクライアントに指定されたクライアントポリシーが適用されるようにすることができます。
よくあるユースケースとして、my-client-1 や my-client-2 など、指定のクライアントに対して特定のクライアントポリシーを適用することが求められます。このような結果を実現する最善の方法は、ポリシーで Client Role 条件を使用し、要求されるクライアントに対して指定の名前のクライアントロールを作成することです。このクライアントロールは、特定のクライアントの特定のクライアントポリシーをマークするためだけに使用する "マーカーロール" として使用できます。
- クライアントドメイン名、ホスト名、または IP アドレス
- クライアントの特定のドメイン名に適用されます。または、管理者が特定のホストまたは IP アドレスからクライアントを登録/更新する場合。
- クライアント属性
- 指定された名前と値のクライアント属性を持つクライアントに適用されます。複数のクライアント属性を指定すると、AND 条件を使用して評価されます。OR 条件を使用して評価する場合は、この条件を複数回設定します。
- 任意のクライアント
- この条件は常に true と評価されます。たとえば、特定のレルム内のすべてのクライアントが FAPI に準拠することを確認するために使用できます。
- ACR 条件
- 認証要求で要求された ACR 値が条件で設定された値と一致する場合に適用されます。たとえば、要求された ACR 値に基づいて認証フローを選択するために使用できます。詳細は、関連ドキュメント と 公式の OIDC 仕様 を参照してください。
- グラントタイプ
- 特定のグラントタイプが使用される場合は true と評価されます。たとえば、クライアントスコープと組み合わせて使用して、特定のクライアントスコープが要求されたときにトークン交換要求をブロックできます。