java - 如何使用 keycloak Rest api 为用户获取更多/可选数据?

标签 java single-sign-on keycloak keycloak-services

我们将 Keycloak 用于 SSO 目的,特别是我们可以使用 REST API /admin/realms/{realm}/users 来获取 Keycloak 领域中的基本用户详细信息,我们得到的响应是 UserRepresentation,它似乎也提供了 realmRolesclientRoles ,但默认情况下它们不是必需的/错误的。

我们有一个获取所有用户的角色的新要求,我看到有额外的 API 公开来获取这些角色:/auth/admin/realms/realm/users/user-id/role-mappings/realm/,但这意味着触发另一个请求,如果我们有 2k 个用户,则意味着还有 2k 个请求。

我的问题是,由于UserRepresentation也具有属性realmRolesclientRoles,但默认情况下似乎是可选的,如何在触发请求/admin/realms/{realm}/users时启用这些属性,并避免获取角色的额外请求。

最佳答案

恐怕在一次请求中获取你需要的数据是不可能的:仅仅通过查看获取 UsersResource 中所有用户的源代码您可以看到 realmRolesclientRoles 从未被填充。

话虽如此,您可以做一件事 - 编写自己的 REST Resource by implementing SPI 。事实上,过去我在团体资源方面也遇到过类似的问题,最后我编写了自己的资源。在这种情况下,您只需要使用一种方法编写自定义资源 - 让所有用户都具有角色。您只需复制粘贴当前的 keycloak 逻辑并添加额外的位或扩展内置的 UsersResource。然而,这并不是一个单一的要点 - 从长远来看,您将需要维护自己的代码,并且如果某些界面发生变化,升级到最新的 keycloak 可能不会那么简单。

关于java - 如何使用 keycloak Rest api 为用户获取更多/可选数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56301410/

相关文章:

java - 将 Spring Cloud 负载均衡与 KeycloakRestTemplate 集成

java - 如何在不可变生成的类中禁用@Generate注释?

java - 整洁的代码 - 如何破坏返回 String 的方法

apache - 如何在 Kerberos SSO 登录失败时设置 apache 重定向或自定义 401 文档

java - Disqus 单点登录 (SSO) 问题

c# - 第一次登录后 SSO Request.IsAuthenticated 始终为 false,但第一次 SSO 登录工作正常

oauth-2.0 - Keycloak - 权限和策略仅在使用“评估”选项卡时有效

keycloak - 设置前端 url 会阻止管理控制台

java - 有没有更简单的方法来解析 Java 中的 XML?

java - Array和ArrayList之间的性能或内存消耗差异