Я пытаюсь настроить разные правила аутентификации для разных URL-адресов в одном приложении Spring.
Для всех публикуемых c запросов на отдых /rest/**
Я хочу настроить базовую c аутентификацию для внутренних вызовов на отдых /internal/**
Мне нужен доступ на основе IP, чтобы некоторые определенные хосты могли получить доступ без аутентификации.
Я попробовал следующую настройку:
@Configuration
@Order(1)
public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests().antMatchers("rest/**").authenticated().and().httpBasic().and().csrf().disable();
}
}
@Configuration
@Order(2)
public static class Api2WebSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests().antMatchers("/internal/**").access("hasIpAddress('100.100.100.100/16')").anyRequest().authenticated();
}
}
Но если я вызываю внутреннюю конечную точку с localhost, я делаю не получаю ошибку 403, как я ожидал