Конфигурация 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;
}