Как аккуратно настроить Spring WebSecurity - PullRequest
0 голосов
/ 18 января 2019

В настоящее время я работаю над настройкой домена безопасности обратного прокси-сервера с помощью Spring Security, и идея состоит в том, чтобы по умолчанию требовать токен-носитель для всех запросов, за исключением нескольких исключений, таких как регистрация и т. Д. Текущая конфигурация Функция выглядит следующим образом:

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.cors().and().csrf().disable().authorizeRequests()
            .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
            .anyRequest().authenticated()
            .and()
            .addFilter(new JWTAuthenticationFilter(authenticationManager()))
            .addFilter(new JWTAuthorizationFilter(authenticationManager()))
            // this disables session creation on Spring Security
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}

Сравнители муравьев довольно полезны, но вы должны передавать все URL-адреса по отдельности. Можно ли вместо этого передать массив строк, чтобы я мог сохранить конфигурацию отдельно?

1 Ответ

0 голосов
/ 18 января 2019
http.cors().and().csrf().disable().authorizeRequests()
        .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()

В приведенном выше коде antMatchers также будет принимать массив строк. Ниже приведена реализация метода anyMatcher в весенней безопасности 4.2.3.RELEASE. В соответствии с сигнатурой метода вы должны иметь возможность передавать массив строк, содержащий необходимые пути.

    /**
 * Maps a {@link List} of
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher}
 * instances that do not care which {@link HttpMethod} is used.
 *
 * @param antPatterns the ant patterns to create
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher} from
 *
 * @return the object that is chained after creating the {@link RequestMatcher}
 */
public C antMatchers(String... antPatterns) {
    return chainRequestMatchers(RequestMatchers.antMatchers(antPatterns));
}

Если вы углубитесь в реализацию, Spring преобразует эти аргументы в ArrayList всех путей.

Кроме того, есть альтернативный способ. Чтобы игнорировать путь, который не должен быть защищен пружинной безопасностью, если вы расширяете класс WebSecurityConfigurerAdapter пружины, снова переопределите тот же метод.

@Override
public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("path":);
}

Полагаю, это так аккуратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...