【发布时间】:2020-09-10 08:35:09
【问题描述】:
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
我有
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
SimpleAuthorityMapper grantedAuthorityMapper = new SimpleAuthorityMapper();
如果我使用这条线
grantedAuthorityMapper.setDefaultAuthority("ROLE_ADMIN");
然后我可以访问我的 API 端点。但是,如果我使用这两行:
List<GrantedAuthority> grantedAuthorityList = AuthorityUtils.createAuthorityList("ROLE_ADMIN", "ROLE_USER");
grantedAuthorityMapper.mapAuthorities(grantedAuthorityList);
然后我无法访问我的 API 端点。
我认为mapAuthorities 方法不起作用,或者我遗漏了什么或者我做错了什么。
这是最后两行:
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(grantedAuthorityMapper);
auth.authenticationProvider(keycloakAuthenticationProvider);
}
【问题讨论】:
标签: java spring-boot spring-security keycloak