如何从 keycloak 中的自定义客户端获取角色?
Posted
技术标签:
【中文标题】如何从 keycloak 中的自定义客户端获取角色?【英文标题】:How to get roles from custom client in keycloak? 【发布时间】:2021-01-09 10:46:40 【问题描述】:要在自定义客户端中获取角色,我知道我需要执行两个 API。一种是获取访问令牌,一种是获取角色。我的疑问是,我应该通过在标头中发送 admin-CLI 详细信息来获取 accessToken,还是因为我想要我创建的自定义客户端的角色?因为,我在尝试获取角色时遇到了 unknown_error。
获取accessToken:
curl -X POST \
http://localhost:8080/auth/realms/test-keycloak-example/protocol/openid-connect/token \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=test-keycloak-example&client_secret=shhh'
获取角色:
curl -X GET \
http://localhost:8080/auth/admin/realms/test-keycloak-example/clients/cb11fd17-46df-419a-9c67-4a69d1be66ae/roles \
-H 'authorization: Bearer <token received from previous call> \
-H 'cache-control: no-cache' \
-H 'postman-token: 248fef6b-9c24-3aa3-91ae-a6f11e01e55c'
回复是:
"error": "unknown_error"
【问题讨论】:
test-keycloak-example 客户端是否有足够的管理权限来管理领域? 是的。 paste.pics/0f17f67b86fe63c2a7ac7e57868b6375 【参考方案1】:使用 Postman 和三个条件应该支持它。 #1 “test-user”需要一个“view-clients”角色。它来自“领域管理”客户端。
#2 使用“admin-cli”客户端和“机密”更改访问类型并打开“授权启用”为“ON”
#3 使用“admin-cli”的密码进行 Postman 令牌调用。
#4 用#3 的秘密和#1 用户的凭据(用户名和密码)获取令牌
令牌“expires_in”很短,您需要通过 UI 延长。 这是 admin-cli 的高级设置(仅用于测试目的)#5 你需要保存一个令牌来调用客户端/角色 API
它与 Postman 测试选项卡上的 #4 的 API 相同。#6 使用#5 的令牌调用列表客户端/角色 API。
#7 从#6 中找到“custom-client”id
#8 使用#7 id 调用自定义角色 API。 它应该与 UI 的角色相匹配。
祝你好运!
【讨论】:
以上是关于如何从 keycloak 中的自定义客户端获取角色?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Keycloak 中的自定义 Admin REST API 获取用户的 ID 令牌