如何通过 REST API 将 Keycloak 领域角色添加到组

use*_*968 4 keycloak keycloak-rest-api

我想将领域角色“TEST_ROLE_123”分配给一个组,我正在使用

PUT /admin/realms/ataccamaone/groups/{group-id}
{
"realmRoles":["TEST_ROLE_123"]
}
Run Code Online (Sandbox Code Playgroud)

group-id/admin/realms/ataccamaone/groups/

但是我得到了响应204 No Content,并且在 Keycloak 控制台中我没有看到分配。

小智 7

我尝试重现您的问题,发现PUT /admin/realms/ataccamaone/groups/{group-id}只能编辑组名称。

检查浏览器的“网络”选项卡,我看到它使用另一个 URL 将角色映射到组。通过 Admin REST API 执行此操作的步骤如下:

  1. 按照https://www.keycloak.org/docs/latest/authorization_services/index.html#_service_protection_whatis_obtain_pat部分中所述获取 PAT

以下步骤使用此 PAT 作为承载令牌(在“授权”标头中)。我想你已经明白了。

  1. 调用GET http://localhost:8080/auth/admin/realms/realm1/roles以获取角色列表,包括角色nameid价值观。

  2. 致电GET http://localhost:8080/auth/admin/realms/realm1/groups获取群组列表,包括其id成员

  3. 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
      }
    ] 
    
    
    Run Code Online (Sandbox Code Playgroud)
  4. DELETE使用与步骤 4 相同的 URL 和正文进行调用,以从组中删除角色。

  • 9个月后我遇到了同样的问题。Keycloak 在很多方面都很出色,但文档确实可以使用自己的项目来提升一个水平。 (2认同)