创建新用户集realmRoles时 - Keycloak Admin REST API

roc*_*oon 2 keycloak keycloak-rest-api

我在创建用户时分配现有领域角色时遇到问题。按照创建新用户时的文档POST /{realm}/users,在使用的 body 参数中UserRepresentation,我们有一个名为的字段realmRoles,该字段是可选的。我已经尝试在以下模式中进行分配:

[
    {
        "id": "123asd-3223r-wer23rwer-werwer",
        "name": "name-of-role-1"
    },
    {
        "id": "23wedf-wefwcs-dfsdf-sdf",
        "name": "name-of-role-2"
    }
]
Run Code Online (Sandbox Code Playgroud)
[
    {
        "id": "123asd-3223r-wer23rwer-werwer",
    },
    {
        "id": "23wedf-wefwcs-dfsdf-sdf",
    }
]
Run Code Online (Sandbox Code Playgroud)
[ "123asd-3223r-wer23rwer-werwer","23wedf-wefwcs-dfsdf-sdf"]
Run Code Online (Sandbox Code Playgroud)
[ "name-of-role-1","name-of-role-2"]
Run Code Online (Sandbox Code Playgroud)

没有上述工作。要么它们被忽略,要么我收到未知错误。

Ben*_*Vue 7

You needs to use user's role mapping API instead of user API

POST {keycloak URL}/admin/realms/{my_realm}/users/{user-id}/role-mappings/realm
Run Code Online (Sandbox Code Playgroud)

body of POST

[
  {
    "id": {realm_role_id},
    "name": {realm_role_name},
    "composite": false,
    "clientRole": false,
    "containerId": {my_realm_id}
  }
]
Run Code Online (Sandbox Code Playgroud)

详细信息位于“添加”部分的官方管理 APIrealm-level role mappings to the user

在此输入图像描述

邮差演示

1 获取主访问令牌,分配token环境variable

这是如何获取主令牌的更多详细信息

在此输入图像描述

2 获取用户列表#1 token

在此输入图像描述

3 获取用户#2 {user id}

在此输入图像描述

4 获取领域 ID#1 token

在此输入图像描述

5 获取领域roles list

在此输入图像描述

6 设置用户的领域角色映射#5's realm role

在此输入图像描述

在 中body,使用数组格式 - 这意味着可以分配多个领域角色

发布网址

http://localhost:8180/auth/admin/realms/test/users/f3d78ca2-7bab-4aed-b1a4-8b98bf1be000/role-mappings/realm
Run Code Online (Sandbox Code Playgroud)

containerId是#4的{realm_id}

id是#5{role_id}

[
  {
    "id": "b73643c4-5375-4f9d-b6d5-65dc7c719c68",
    "name": "name-of-role-2",
    "composite": false,
    "clientRole": false,
    "containerId": "a6d347b4-3fe8-4410-bda6-54dbf8e50903"
  }
]
Run Code Online (Sandbox Code Playgroud)

返回状态应为 204 无内容。

如果不是,那就出问题了。

最后,您可以确认领域角色分配的结果。

在此输入图像描述

如果您想通过API确认

获取API

http://localhost:8180/auth/admin/realms/test/users/f3d78ca2-7bab-4aed-b1a4-8b98bf1be000/role-mappings/realm
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述