Spring Boot Keycloak - 如何获取分配给用户的角色列表?

问题描述:

我试图从一个使用keycloak保护的Spring Boot应用程序中获得分配给特定用户的角色列表。Spring Boot Keycloak - 如何获取分配给用户的角色列表?

我已经宣布在KeycloakWebSecurityConfigurerAdapter配置类的AccessToken豆如下:

@Configuration 
    @EnableWebSecurity 
    @ComponentScan(basePackageClasses = KeycloakSecurityComponents.class) 
    public class KeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter { 

//other config code 

     @Bean 
     @Scope(scopeName = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) 
     public AccessToken accessToken() { 
      HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); 
      return ((KeycloakSecurityContext) ((KeycloakAuthenticationToken) request.getUserPrincipal()).getCredentials()).getToken(); 
     } 

    } 

现在我可以自动装配在控制器中AccessToken和我能够得到这样的ID和用户名的信息,但我该怎么办使用AccessToken获取分配给用户的角色列表?

资源角色映射使用

AccessToken.Access access = accessToken.getResourceAccess(clientId); 
    Set<String> roles = access.getRoles(); 

的境界角色映射使用

AccessToken.Access access = accessToken.getRealmAccess(); 
Set<String> roles = access.getRoles(); 
+1

都带有“无记名只有”客户端工作的呢? –