我想将领域角色“TEST_ROLE_123”分配给一个组,我正在使用
PUT /admin/realms/ataccamaone/groups/{group-id}
{
"realmRoles":["TEST_ROLE_123"]
}
我从
group-id
得到了
/admin/realms/ataccamaone/groups/
但是我得到了响应
204 No Content
并且在 Keycloak 控制台中我没有看到分配。
我尝试重现您的问题,发现
PUT /admin/realms/ataccamaone/groups/{group-id}
只能编辑群组名称。
检查浏览器的“网络”选项卡,我看到它使用另一个 URL 将角色映射到组。通过 Admin REST API 执行此操作的步骤是:
以下步骤使用此 PAT 作为承载令牌(在“授权”标头中)。我想你已经明白了。
调用
GET http://localhost:8080/auth/admin/realms/realm1/roles
获取角色列表,包括其 name
和 id
值。
致电
GET http://localhost:8080/auth/admin/realms/realm1/groups
获取群组列表,包括他们的 id
s
致电
POST http://localhost:8080/auth/admin/realms/realm1/groups/{group-id}/role-mappings/realm
并使用以下正文:
[
{
"id": "9083cac3-4280-497d-b973-7713a5fb12b4", // role-id
"name": "secretary" // role-name
}
]
使用与步骤 4 相同的 URL 和正文调用
DELETE
,以从组中删除角色。
我遇到了同样的问题,并使用组纠正了它,基本上我已将首选角色添加到用户组角色列表中,并在通过 REST API 创建用户时使用该特定用户组。
例如:- ADMIN_USER_GROUP -> 包含('ADMIN_ROLE')
那么用户创建 API 请求应该如下所示,
{
"firstName": "Sergey",
"lastName": "Kargopolov",
"email": "[email protected]",
"enabled": "true",
"credentials": [
{
"value": "123"
}
],
"groups": [
"ADMIN_USER_GROUP"
]
}
我正在使用 keycloak v24.0.4,阅读文档时这根本不起作用。在阅读了这里的一些答案后,我自己想出了:
我们需要使用路线
POST /admin/realms/{realm}/groups/{group-id}/role-mappings/realm
并发送包含角色 id
和 name
组合的数组的正文:
[
{
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", // role UUID
"name": "test-role"
}
]
我希望这对任何人都有帮助=)