当前位置: 首页 > 知识库问答 >
问题:

如何从KeyCloak获取用户组并用Java打印

匡祖鹤
2023-03-14

我有一个spring-boot-starter-security的spring-boot应用程序,我已经将Keycloak集成到Spring Boot应用程序中,用于身份验证/授权。我想从KeyCloak获取用户组,并在SpringBoot应用程序中显示它们。你知道从KeyCloak获取用户组并在屏幕上显示它们的方法吗?应该有一个实现来提供它?

这是我的SecurityConfiguration java:

  @Configuration
  @EnableGlobalMethodSecurity(prePostEnabled = true)
  @EnableWebSecurity
  public class KeyCloakSecurityConfig extends WebSecurityConfigurerAdapter {

 private final KeycloakJwtConfig keycloakJwtConfig;



  @Override
  public void configure(final HttpSecurity http) throws Exception {
   http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    .and()
    .csrf().disable()
    .formLogin().disable()
    .authorizeRequests()
    .antMatchers(HttpMethod.GET, "/actuator/health").permitAll()
    .anyRequest().authenticated()
    .and()
    .oauth2ResourceServer()
    .jwt()
    .jwtAuthenticationConverter(new JwtAuthoritiesExtractor())
    .jwkSetUri(this.keycloakJwtConfig.jwkSetUri());
   }

 @Autowired
public SecurityConfiguration(final KeycloakJwtConfig   keycloakJwtConfig) {
 keycloakJwtConfig = keycloakJwtConfig;
    }

共有1个答案

田马鲁
2023-03-14

为了在Java中列出Keycloak领域中的所有用户组,您可以使用Keycloak提供的Keycloak Admin REST客户端库,这些库可以在公共Maven存储库中获得:groupid=org.Keycloak,artifactid=keyCloak-admin-client,版本与您的Keycloak服务器相同(至少主要部分和次要部分相同)。基本上,使用这个库,您可以创建一个Keycloak实例,然后选择域,并从中获取组,例如,如服务器开发人员指南中的Admin REST API>Example using Java一节和Keycloak github上的GroupTest测试用例(方法SearchandCountGroups)所示。

Keycloak keycloak = Keycloak.getInstance(
    "http://localhost:8080/auth",
    "master",
    "admin",
    "password",
    "admin-cli");
RealmRepresentation realm = keycloak.realm("master").toRepresentation();

for (GroupRepresentation group : realm.groups().groups()) 
{
  // Display group.getId(), group.getName(), etc.
}
 类似资料: