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

Cha*_*lie 5 java spring spring-data-rest spring-boot keycloak

我正在尝试从使用 keycloak 保护的 Spring Boot 应用程序获取分配给特定用户的角色列表。

AccessTokenKeycloakWebSecurityConfigurerAdapter配置类中声明了一个bean,如下所示:

    @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();
        }

    }
Run Code Online (Sandbox Code Playgroud)

现在我可以AccessToken在控制器中自动装配并且我能够获取诸如 ID 和用户名之类的信息,但是如何使用AccessToken?

rav*_*iru 5

用于资源角色映射使用

AccessToken.Access access = accessToken.getResourceAccess(clientId);
     Set<String> roles = access.getRoles();
Run Code Online (Sandbox Code Playgroud)

对于领域角色映射使用

AccessToken.Access access = accessToken.getRealmAccess();
 Set<String> roles = access.getRoles();
Run Code Online (Sandbox Code Playgroud)