у нас есть приложение «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();
}
}}
Над кодомотвечать на обычные звонки с аутентификацией и без нее.Мое требование - не разрешать обычные вызовы без аутентификации и разрешать междоменные запросы.