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

时间:2021-03-10 15:46:03

标签: node.js postman keycloak keycloak-rest-api

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

这里是网址-

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

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

POST 的正文-

{
"roles": [
            {

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

对于邮递员,我设置- Content-Type application/json 授权承载 {TOKEN}

我哪里出错了?

编辑: 这是我的邮递员设置-

这是我在邮递员中的设置- 标题-<​​/p>

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

授权- 类型 = 承载令牌 每次尝试前手动成功生成token

Body-raw 单选按钮被选中,下面作为原始数据-

 {
   "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 上的不同。当我使用返回值时,一切都很好,而且工作正常!用于 url 参数或帖子文档正文的客户端、领域等的名称和 ID 令人困惑。错误的 id 会导致 404。希望这对我花了几个小时在这个上的人有所帮助...

1 个答案:

答案 0 :(得分:1)

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

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

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