やりたいこと
Red Hat build of Keycloak(Keycloakの商用版)にてAdmin API経由でAggregate Policyに関する情報を取得する。
環境情報
- Red Hat Enterprise Linux : 9.3 (Plow)
- rhbk-22.0.8
やり方
アクセストークン及び該当のクライアントのID及び該当のAggregate PolicyのIDを控えた上で以下のようにGETを行うと
$ curl --location --request GET 'http://localhost:8080/admin/realms/master/clients/<client-id>/authz/resource-server/policy/<policy-id>/associatedPolicies --header 'Content-Type: application/json' --header "Authorization: Bearer $AT"
以下のように紐づくPolicyが全て表示される。
[ { "id": "xx", "name": "testgp", "description": "xx", "type": "group", "logic": "POSITIVE", "decisionStrategy": "UNANIMOUS", "config": {} }, { "id": "xx", "name": "hogegp", "description": "", "type": "group", "logic": "POSITIVE", "decisionStrategy": "UNANIMOUS", "config": {} } ]
またAggregate PolicyのDecision strategyはポリシー情報の取得で
$ curl --location --request GET 'http://localhost:8080/admin/realms/master/clients/<client-id>/authz/resource-server/policy/<policy-id> --header 'Content-Type: application/json' --header "Authorization: Bearer $AT"
以下のように確認ができる。
{ "id": "xx, "name": "test-ag", "description": "", "type": "aggregate", "logic": "POSITIVE", "decisionStrategy": "AFFIRMATIVE", "config": {} }
以下、補足です。
補足
コンソールからは「Client > Client Detail > Authorization」でアグリゲートポリシーを選択すると以下のように関連情報が全て確認できます。

一方でAdminAPI経由だとポリシー情報の中にはtypeやdecisionStrategyしか確認できません。なので、上で記載したように「associatedPolicies」から情報を追加で取得する必要があります。
尚、PolocyのIDは以下から取得できます。1
$ curl --location --request GET 'http://localhost:8080/admin/realms/master/clients/<client-id>/authz/resource-server/policy --header 'Content-Type: application/json' --header "Authorization: Bearer $AT"
以上、ご参考になれば幸いです。