Конфигурация Spring Security WebSecurityConfigurerAdapter

У меня есть простое приложение Spring Boot со следующими 2 конечными точками:

  • int: требуется Shibboleth SSO && Авторизованная роль
  • ext: нет единого входа, не требуется авторизация

Я реализовал PreAuthenticationFilter работать с ССО. Ниже приведена конфигурация, которая не работает:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
            .authorizeRequests()
                .antMatchers("/ext/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .authorizeRequests()
                .and()
            .addFilter(preAuthenticationFilter());
    }
}

не должны PreAuthenticationFilter обойти /ext конечная точка? Однако приведенная выше конфигурация заставляет обе конечные точки перейти к PreauthenticationFilter, Также попробовал

web.ignoring().antMatchers("/ext/**")

но безрезультатно.

Вот остальная часть моей программы:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/ext/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .authorizeRequests()
                .and()
            .addFilter(preAuthenticationFilter());
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        //web.ignoring().antMatchers("/ext/**");
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        PreAuthenticatedAuthenticationProvider authenticationProvider = new PreAuthenticatedAuthenticationProvider();
        authenticationProvider.setPreAuthenticatedUserDetailsService(new ShibbolethUserDetailsService());
        auth.authenticationProvider(authenticationProvider);
    }

    @Bean
    RequestHeaderAuthenticationFilter preAuthenticationFilter() throws Exception {
        ShibbolethRequestHeaderAuthenticationFilter filter = new ShibbolethRequestHeaderAuthenticationFilter();
        filter.setAuthenticationManager(authenticationManager());       
        return filter;
    }

0 ответов

Другие вопросы по тегам