如何通过 REST API 将 Keycloak 领域角色添加到组
Posted
技术标签:
【中文标题】如何通过 REST API 将 Keycloak 领域角色添加到组【英文标题】:How to add Keycloak realm role to group via REST API 【发布时间】:2020-10-16 05:47:48 【问题描述】:我想将领域角色“TEST_ROLE_123”分配给一个组,我正在使用
PUT /admin/realms/ataccamaone/groups/group-id
"realmRoles":["TEST_ROLE_123"]
我从/admin/realms/ataccamaone/groups/
得到group-id
但是我得到了204 No Content
的响应,但在 Keycloak 控制台中我没有看到分配。
【问题讨论】:
【参考方案1】:我尝试重现您的问题,发现PUT /admin/realms/ataccamaone/groups/group-id
只能编辑组名。
检查浏览器的“网络”选项卡,我看到它使用另一个 URL 将角色映射到组。通过 Admin REST API 执行此操作的步骤是:
-
按照https://www.keycloak.org/docs/latest/authorization_services/index.html#_service_protection_whatis_obtain_pat 部分所述获取 PAT
以下步骤使用此 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
以从组中删除角色。
【讨论】:
我们需要哪些凭据才能获得此 api 的授权? 9 个月后我遇到了同样的问题。 Keycloak 在很多方面都很棒,但文档确实可以使用它自己的项目来提升它的水平。 非常感谢您分享这个。 Keycloak 文档可以在此主题上进行改进...【参考方案2】:我遇到了同样的问题,并使用 GROUP 进行了纠正,基本上我已将首选角色添加到用户组角色列表中,并在通过 REST API 创建用户时使用了该特定用户组。
例如:- ADMIN_USER_GROUP -> 包含('ADMIN_ROLE')
那么用户创建 API 请求应该如下所示,
"firstName": "Sergey",
"lastName": "Kargopolov",
"email": "test4@test.com",
"enabled": "true",
"credentials": [
"value": "123"
],
"groups": [
"ADMIN_USER_GROUP"
]
【讨论】:
以上是关于如何通过 REST API 将 Keycloak 领域角色添加到组的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Keycloak 并通过 REST API 完成所有步骤并获得 JWT?
如何通过执行操作电子邮件通过 keycloak admin rest api 更新密码
使用 cUrl 通过其 REST API 配置 Keycloak
记录以便使用 KeyCloak REST API 创建浏览器会话