Различные правила аутентификации с пружинной безопасностью - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь настроить разные правила аутентификации для разных 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, как я ожидал

1 Ответ

0 голосов
/ 24 января 2020

В конце, после многих попыток и ошибок, я придумал:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    http.authorizeRequests().antMatchers("/rest/**").authenticated().and().httpBasic().and().csrf().disable().authorizeRequests()
        .antMatchers("/internal/**").access("hasIpAddress('100.100.100.100/16')").anyRequest().permitAll().anyRequest().denyAll();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...