はじめに
Red Hat build of Keycloak(Keycloakの商用版)ではユーザにグループという属性があります。
属性とは違ってサブグループ/親グループという階層構造となっているのが特徴で、ユーザへのロールマッピングにて利用されます。
そんなグループですが、本記事はAdminAPIを利用して既存のグループに関して参照/変更を行う方法とその結果を記載します。
参照系
グループの一覧
レルムに存在するグループを表示する。
$ curl -k -X GET http://localhost:8080/admin/realms/master/groups?max=10000 -H "Authorization: Bearer "$AT
[ { "id": "xx", "name": "hogeg", "path": "/hogeg", "subGroups": [] }, { "id": "yy", "name": "testg", "path": "/testg", "subGroups": [] } ]
ユーザのグループ表示
特定のユーザが所属しているグループを表示する。ユーザのIDをURLに入れる。
$ curl -k -X GET http://localhost:8080/admin/realms/master/users/<user-id>/groups -H "Authorization: Bearer "$AT
[ { "id": "xx", "name": "hogeg", "path": "/hogeg" } ]
追加系
特定のユーザに特定のグループを追加する。ユーザのIDとグループのIDをURLに入れる。
$ curl --location --request PUT 'http://localhost:8080/admin/realms/master/users/<user-id>/groups/<group-id> --header 'Content-Type: application/json' --header "Authorization: Bearer $AT"
尚、グループ自体を新規で作成する場合は名前のみの指定で作成できます。
$ curl --location --request POST 'http://localhost:8080/admin/realms/master/groups' --header 'Content-Type: application/json' --header "Authorization: Bearer $AT" --data-raw '{"name":"testg"}'
削除系
特定のユーザが所属している特定のグループを削除する。ユーザのIDとグループのIDをURLに入れる。
$ curl --location --request DELETE "http://localhost:8080/admin/realms/master/users/$1/groups/$2" --header 'Content-Type: application/json' --header "Authorization: Bearer $AT"
終わりに
グループは属性と異なり、単純な追加ができるため置き換えたい場合は削除と追加を組み合わせる必要があります。
以上、ご参考になれば幸いです。