我正在尝试使用 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。希望这对我花了几个小时在这个上的人有所帮助...
答案 0 :(得分:1)
问题出在身体上,请尝试以下操作:
[{"id":"5aee8f8c-421f-4ed4-93d1-2ddd44864f4f","name":"admin","composite":false,"clientRole":true,"containerId":"6b1f23b4-6bec-4873-a991-4b7e49e8b797"}]
id
应该是角色 ID
,containerId
应该是客户端的 ID。