使用 Keycloak Rest API 将用户添加到客户端角色

Add user to client role using Keycloak Rest API

我正在尝试使用 Keycloak rest API 向特定用户添加客户端级别角色。我正在 Postman 中尝试此操作,但一直找不到 404。

这里是url-

https://{keycloak url}/auth/admin/realms/acme/users/b62dc517-0dd8-41ad-9d97-f385e507e279/role- mappings/clients/6b1f23b4-6bec-4873-a991-4b7e49e8b797

url中的“users”参数是keycloak中的用户id(b62dc517-0dd8-41ad-9d97-f385e507e279),url的最后一部分是客户端id (6b1f23b4-6bec-4873-a991-4b7e49e8b797) 在 keycloak

POST-

的body
{
"roles": [
            {

                "id": "5aee8f8c-421f-4ed4-93d1-2ddd44864f4f",
                "name": "admin",
                "composite": false,
                "clientRole": true,
                "containerId": "5f930328-98bc-40d0-9882-dd7f2482b6c2"
            }
]
}

对于 Postman,我设置了- Content-Type application/json 授权持有人 {TOKEN}

我哪里做错了?

编辑: 这是我的 Postman 设置-

这是我在 postman 中的设置- Headers-

Content-Length = <calculated when request is sent>
Host = <calculated when request is sent>
User-Agent = PostmanRuntime/7.26.10
Accept = */*
Accept Encoding = gzip, deflate, br
Connection = keep-alive
Content-Type = application/json

授权- 类型 = 不记名令牌 每次手动尝试前成功生成令牌

Body-原始单选按钮被选中,下面是原始数据-

 {
   "roles": [
        {

            "id": "5aee8f8c-421f-4ed4-93d1-2ddd44864f4f",
            "name": "admin",
            "composite": false,
            "clientRole": true,
            "containerId": "6b1f23b4-6bec-4873-a991-4b7e49e8b797"
        }
 ]
 }

方法是POST

编辑- 答案在 dreamcrash 的评论中。我从 Keycloak UI 复制了客户端 ID,这导致了 404。我注意到当我使用 postman 获取客户端 ID 时,它与 UI 上的不同.当我使用 return 值时,一切正常并且有效! url 参数或 post 文档的 body 的客户端名称和 ID、领域等令人困惑。错误的 ID 会导致 404。希望这对我花了几个小时的人有所帮助...

问题出在 body 上,请尝试以下操作:

[{"id":"5aee8f8c-421f-4ed4-93d1-2ddd44864f4f","name":"admin","composite":false,"clientRole":true,"containerId":"6b1f23b4-6bec-4873-a991-4b7e49e8b797"}]

id应该是角色IDcontainerId应该是客户端的ID。