SSO配置的春季安全问题

时间:2019-03-15 10:47:20

标签: java spring-security single-sign-on saml http-basic-authentication

我正在尝试配置SAML身份验证并向用户添加角色。

我正在使用spring securityspring 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();
    }
}

我所面临的问题是代码正在编译并且两个配置都在执行,但是我添加的过滤器没有起作用。

似乎一次只有一种配置有效。

请提出建议。

谢谢

0 个答案:

没有答案