У меня есть конфигурация Spring Security, которая работает «аутентифицирует» пользователя, читая определенное значение заголовка. Таким образом, используя RequestHeaderAuthenticationFilter ():
private RequestHeaderAuthenticationFilter requestHeaderFilter() throws Exception {
RequestHeaderAuthenticationFilter authenticationFilter = new RequestHeaderAuthenticationFilter();
authenticationFilter.setPrincipalRequestHeader("user");
authenticationFilter.setAuthenticationManager(this.authenticationManager());
return authenticationFilter;
}
private static final String HEALTH_PATH_NOAUTH = "/actuator/health";
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers(HEALTH_PATH_NOAUTH);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.cors();
http.authorizeRequests().anyRequest().authenticated();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilter(requestHeaderFilter());
}
Мне нужно исключить из безопасности определенный путь: "/ activator / health" Сначала я попытался "allowAll", настроив HttpSecurity:
http.authorizeRequests().antMatchers(HEALTH_PATH_NOAUTH).permitAll().anyRequest().authenticated();
Но это не помогло и не помогло переопределить «WebSecurity», как вы видите в первом листинге. RequestHeaderAuthenticationFilter всегда выдает свое исключение, если заголовок не установлен. Я хочу, чтобы это исключение было выдано, но не для этого определенного пути.
Как решить эту проблему?
ОБНОВЛЕНИЕ: Я удалил "bean" и сделал метод закрытым, но это не должно делатьразница - web.ignoring().antMatchers(HEALTH_PATH_NOAUTH);
должен работать независимо от того, добавлен ли фильтр явно или в виде компонента, или даже дважды - верно?