我正在尝试配置SAML
身份验证并向用户添加角色。
我正在使用spring security
和spring boot version 2.1.3
以下是我编写的配置:
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true)
@Order(1)
public class SAMLConfiguration extends WebSecurityConfigurerAdapter{
@Value("${security.saml2.metadata-url}")
String metadataUrl;
@Value("${server.ssl.key-alias}")
String keyAlias;
@Value("${server.ssl.key-store-password}")
String password;
@Value("${server.port}")
String port;
@Value("${server.ssl.key-store}")
String keyStoreFilePath;
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/saml*").permitAll()
.anyRequest().authenticated()
.and()
.apply(saml())
.serviceProvider()
.keyStore()
.storeFilePath(this.keyStoreFilePath)
.password(this.password)
.keyname(this.keyAlias)
.keyPassword(this.password)
.and()
.protocol("http")
.hostname(String.format("%s:%s", "localhost", this.port))
.basePath("/")
.and()
.identityProvider()
.metadataFilePath(this.metadataUrl);
}
}
定义角色的第二种配置:
@Configuration
@Order(2)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/internal").hasRole(INTERNAL_ACCESS)
.antMatchers("/admin/**").hasRole(ADMIN_ACCESS)
.antMatchers("/guest/**").hasRole(GUEST_ACCESS)
.and()
.httpBasic()
.and()
.addFilterBefore(new AuthenticationFilter(), BasicAuthenticationFilter.class)
.csrf().disable().headers();
}
}
我所面临的问题是代码正在编译并且两个配置都在执行,但是我添加的过滤器没有起作用。
似乎一次只有一种配置有效。
请提出建议。
谢谢