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

问题描述 投票:0回答:3

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

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

我从

group-id
得到了
/admin/realms/ataccamaone/groups/

但是我得到了响应

204 No Content
并且在 Keycloak 控制台中我没有看到分配。

keycloak keycloak-rest-api
3个回答
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
    获取角色列表,包括其
    name
    id
    值。

  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. 使用与步骤 4 相同的 URL 和正文调用

    DELETE
    ,以从组中删除角色。


0
投票

我遇到了同样的问题,并使用组纠正了它,基本上我已将首选角色添加到用户组角色列表中,并在通过 REST API 创建用户时使用该特定用户组。

例如:- ADMIN_USER_GROUP -> 包含('ADMIN_ROLE')

那么用户创建 API 请求应该如下所示,

{
    "firstName": "Sergey",
    "lastName": "Kargopolov",
    "email": "[email protected]",
    "enabled": "true",
    "credentials": [
        {
            "value": "123"
        }
    ],
    "groups": [
        "ADMIN_USER_GROUP"
    ]
}

0
投票

我正在使用 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"
    }
]

我希望这对任何人都有帮助=)

© www.soinside.com 2019 - 2024. All rights reserved.