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

m9m*_*m9m 2 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'
Run Code Online (Sandbox Code Playgroud)

获取角色:

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'
Run Code Online (Sandbox Code Playgroud)

响应是:

{
   "error": "unknown_error"
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*Vue 8

使用 Postman 和三个条件应该支持它。#1“测试用户”需要“查看客户端”角色。它来自“领域管理”客户端。 在此输入图像描述

#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 的角色相匹配。 在此输入图像描述

祝你好运!