(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Keycloak/RHBK】AdminAPIでAggregate Policyに紐づくポリシーを取得する

スポンサーリンク

やりたいこと

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」でアグリゲートポリシーを選択すると以下のように関連情報が全て確認できます。

管理コンソールから見たaggregate policy

一方で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" 

以上、ご参考になれば幸いです。