1

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

PUT /admin/realms/ataccamaone/groups/{group-id}
{
"realmRoles":["TEST_ROLE_123"]
}

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

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

4

2 回答 2

3

我试图重现您的问题,发现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的 s

  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
      }
    ] 
    
    
  4. DELETE使用与步骤 4 相同的 URL 和正文调用以从组中删除角色。

于 2020-06-28T05:52:21.397 回答
0

我遇到了同样的问题并使用 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"
    ]
}
于 2021-07-27T17:37:35.673 回答