如何从Keycloak中的自定义客户端获取角色?

时间:2020-09-23 09:01:52

标签: keycloak keycloak-rest-api

要在自定义客户端中获得角色,我知道我需要执行两个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"
}

1 个答案:

答案 0 :(得分:0)

使用邮递员和三个条件应支持它。 #1“测试用户”需要一个“查看客户端”角色。它来自“领域管理”客户端。 enter image description here

#2使用“ admin-cli”客户端并使用“机密”更改访问类型并打开“启用授权”为“开” enter image description here

#3使用“ admin-cli”的秘密进行邮递员令牌呼叫。 enter image description here

#4获得具有#3的秘密和#1用户的凭据(用户名和密码)的令牌

  • 令牌“ expires_in”非常短,您需要通过UI使其更长。 这是admin-cli的高级设置(仅用于测试目的) enter image description here enter image description here

#5您需要保存用于调用客户端/角色API的令牌

  • 与Postman的“测试”选项卡上的#4 API相同。 enter image description here

#6带有#5令牌的呼叫列表客户端/角色API。 enter image description here

enter image description here

#7从#6查找“自定义客户端” ID enter image description here

#8使用#7 id调用自定义角色API。 enter image description here 它应该与UI的角色匹配。 enter image description here

祝你好运!