使用 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
应该是角色ID
,containerId
应该是客户端的ID。
我正在尝试使用 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
应该是角色ID
,containerId
应该是客户端的ID。