在我的公司,我们需要从Keycloak提供的REST API中提取登录用户的角色。我们查看了 Keycloak 文档,但找不到我们正在寻找的答案。让我解释一下我们想要实现的流程:用户登录到 Keycloak 中定义的客户端并接收存储在应用程序 Web 客户端中的 JWT。该用户不是 Keycloak 中的管理员。当Web客户端向后端服务器发出请求时,后端服务器会向Keycloak查询用户的角色。而且,这就是我们遇到麻烦的地方。我们无法找出 REST API 的正确 URL 或将哪个 token 添加到身份验证 header 。 总结一下:我们需要有关查询用户角色所需的 URL 以及发送什么 token 来对 API 进行授权的帮助。我知道可以从 JWT 检索角色,但我们担心随着时间的推移,有效负载会变得很大。一个用户可能在不同部门拥有多个角色。
最佳答案
角色应该在 JWT 有效负载中,这应该在 keycloak 服务中配置。流程应该是这样的:
- 前端对用户进行身份验证,并存储keycloak返回的JWT token
- 前端命中后端,包括请求 header 中的 token
- 后端获取 token ,使用公钥验证它(公钥由 keycloak 提供),如果 token 有效,则从 token 有效负载中获取角色并执行授权过程
关于rest - 从 Keycloak 中的 REST API 中提取角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55218180/