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

时间:2020-06-25 17:23:08

标签: keycloak keycloak-rest-api

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

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

我从group-id获得了/admin/realms/ataccamaone/groups/

但是我得到响应204 No Content,在Keycloak控制台中我看不到分配。

2 个答案:

答案 0 :(得分:0)

我试图重现您的问题,发现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
      }
    ] 
    
    
  4. 使用与步骤4相同的URL和正文调用DELETE,以从组中删除角色。

答案 1 :(得分:0)

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

例如:- ADMIN_USER_GROUP -> INCLUDED ('ADMIN_ROLE')

然后用户创建 API 请求应该如下所示,

{
    "firstName": "Sergey",
    "lastName": "Kargopolov",
    "email": "test4@test.com",
    "enabled": "true",
    "credentials": [
        {
            "value": "123"
        }
    ],
    "groups": [
        "ADMIN_USER_GROUP"
    ]
}