Как обеспечить один способ аутентификации для кросс-доменных запросов и другой способ для обычных запросов в Spring-Security - PullRequest
0 голосов
/ 19 февраля 2019

у нас есть приложение «ASMS», оно содержит список микроуслуг. Другие приложения обращаются к микроуслугам. Моё требование: для междоменных запросов не нужно проверять базовую аутентификацию, а для обычных запросов нужно проверять базовую аутентификацию.

Я реализовал описанный выше сценарий, основанный на многоуровневой безопасности, с использованием @Order annotation.SpringSecurityCrossDomainConfig класс разрешает междоменные запросы без аутентификации, класс SpringSecurityConfig обеспечивает базовую аутентификацию для обычных вызовов

@Configuration
@EnableWebSecurity
@Order(1)
public class SpringSecurityCrossDomainConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll();
    }
}

@Configuration
@EnableWebSecurity
@Order(2)
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.antMatchers("/twilio/**").permitAll()
.antMatchers("/api/**")
.hasAnyRole("SUPER_USER", "ADMIN", "REST", "CLIENT").antMatchers("/api/**")
.access("@webSecurity.check(authentication, request)").and().sessionManagement()        .sessionCreationPolicy(SessionCreationPolicy.NEVER).and().httpBasic();
    }
    }}

Над кодомотвечать на обычные звонки с аутентификацией и без нее.Мое требование - не разрешать обычные вызовы без аутентификации и разрешать междоменные запросы.

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