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();
都带有“无记名只有”客户端工作的呢? –