从 Keycloak 中的 REST API 中提取角色

Posted

技术标签:

【中文标题】从 Keycloak 中的 REST API 中提取角色【英文标题】:Extract roles from REST API in Keycloak 【发布时间】:2019-08-08 15:12:06 【问题描述】:

在我的公司,我们需要从 Keycloak 提供的 REST API 中提取登录用户的角色。我们查看了 Keycloak 文档,但找不到我们正在寻找的答案。让我解释一下我们想要实现的流程:用户登录到 Keycloak 中定义的客户端并接收存储在应用程序 Web 客户端中的 JWT。用户不是 Keycloak 中的管理员。当 Web 客户端向后端服务器发出请求时,后端服务器会向 Keycloak 查询用户的角色。而且,这就是我们遇到麻烦的地方。我们无法确定 REST API 的正确 URL 或将哪个令牌添加到身份验证标头。 总结一下:我们需要查询用户角色所需的 URL 以及发送什么令牌来授权 API 的帮助。我知道可以从 JWT 中检索角色,但我们担心随着时间的推移有效负载会变得很大。一个用户可能在不同部门有多个角色。

【问题讨论】:

【参考方案1】:

角色应该在 JWT 有效负载中,这应该在 keycloak 服务中配置。流程应该是这样的:

    前端认证用户,存储keycloak返回的JWT令牌 前端命中后端包括请求头中的token 后端获取token,使用公钥验证(公钥由keycloak提供),如果token有效,则从token payload中获取角色并执行授权过程

【讨论】:

感谢您的回答。我了解您描述的流程是“正常”流程。在我们的例子中,一个用户可能有很多角色(用户可以在不同的部门有多个角色),我们担心随着时间的推移这可能会导致 JWT 中的负载过大。这就是我们要从 keycloak 服务器中提取角色的原因。 哦,我明白了,那我建议你看看这个keycloak.org/docs/latest/authorization_services/…,我没用过,但看起来它就是你要找的。​​span>

以上是关于从 Keycloak 中的 REST API 中提取角色的主要内容,如果未能解决你的问题,请参考以下文章

与 Keycloak 身份验证插件集成时,无法从 rest 客户端调用 nuxeo rest api

如何从 REST API(PUT 方法)更新 Keycloak 密码?

哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?

如何从 Keycloak REST API 获取用户?

Keycloak REST API 无法从用户角色映射中删除客户端级角色

有没有办法使用 Keycloak Admin REST API 将用户添加到 Keycloak 中的多个组(批量)?