Конфигурация Spring Security WebSecurityConfigurerAdapter - PullRequest
0 голосов
/ 01 февраля 2019

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

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

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

@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;
    }
...