Java 如何使用keyclaok rest api为用户获取更多/可选数据?
我们使用keydape进行SSO,特别是我们能够使用restapiJava 如何使用keyclaok rest api为用户获取更多/可选数据?,java,single-sign-on,keycloak,keycloak-services,Java,Single Sign On,Keycloak,Keycloak Services,我们使用keydape进行SSO,特别是我们能够使用restapi/admin/realms/{realm}/users获取keydape领域中的基本用户详细信息,我们得到的响应是UserRepresentation,它似乎也提供了realmRoles和clientRoles,但默认情况下它们不是必需的/false 我们有一个新的需求来获取所有用户的角色,我看到有额外的API公开来获取这些角色:/auth/admin/realms/realm/users/user id/role mapping
/admin/realms/{realm}/users
获取keydape领域中的基本用户详细信息,我们得到的响应是UserRepresentation,它似乎也提供了realmRoles和clientRoles,但默认情况下它们不是必需的/false
我们有一个新的需求来获取所有用户的角色,我看到有额外的API公开来获取这些角色:/auth/admin/realms/realm/users/user id/role mappings/realm/
,但这意味着触发另一个请求,如果我们有2k个用户,则意味着还有2k个请求
我的问题是,UserRepresentation也有属性realmRoles和clientRoles,但默认情况下似乎是可选的,如何在触发请求时启用这些属性
/admin/realms/{realm}/users
,并避免额外请求获取角色。我担心在一个请求中获取所需数据是不可能的:只需查看获取所有用户的源代码,您就可以看到,realmRoles
和clientRoles
从未填充过
话虽如此,有一件事你可以做——写你自己的。事实上,在过去,我在使用groups资源时也遇到过类似的问题,最终我编写了自己的资源。在这种情况下,您将只需要使用一种方法编写自定义资源—使用角色获取所有用户。您只需复制粘贴当前KeyClope逻辑并添加额外位或扩展内置UsersResource。然而,,不是一个单一的项目-从长远来看,您将需要维护自己的代码,如果某些界面发生变化,升级到最新的KeyClope可能不会那么简单。我担心在一个请求中获取您需要的数据是不可能的:只要查看获取所有用户的源代码,您就可以看到这一点
realmRoles
和clientRoles
从不填充
话虽如此,有一件事你可以做——写你自己的。事实上,在过去,我在使用groups资源时也遇到过类似的问题,最终我编写了自己的资源。在这种情况下,您将只需要使用一种方法编写自定义资源—使用角色获取所有用户。您只需复制粘贴当前KeyClope逻辑并添加额外位或扩展内置UsersResource。然而,这并不是一个单一的项目-从长远来看,您需要维护自己的代码,如果某些界面发生变化,升级到最新的KeyClope可能不会那么简单。您是否尝试过获取/admin/clients/{id}/rolesIt需要用户id,如果您想要2k个用户角色,它需要激发2k个请求,不可伸缩。您是否尝试过GET/admin/clients/{id}/rolesIt需要用户id,如果您想要2k个用户角色,它需要激发2k个请求,而不是可伸缩的。