При такой конфигурации все мои запросы API завершаются неудачно.
Код: Выделить всё
@Configuration
@EnableWebSecurity
@EnableMethodSecurity(securedEnabled = true, proxyTargetClass = true)
public class WebSecurityConfig {
@Configuration
@Order(1)
public static class ApiWebSecurityConfigurationAdapter implements RequestMatcher {
@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(basicAuthenticationProvider)
.authenticationProvider(jwtAuthenticationProvider);
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
String apiRegex = "/(" + apiPrefix + "/)?api";
http
.securityMatcher("/api/**", "/" + apiPrefix + "/api/**")
.addFilterBefore(new RequestFilter(), UsernamePasswordAuthenticationFilter.class)
.authorizeHttpRequests((requests) -> requests
.requestMatchers(HttpMethod.GET, apiRegex, apiRegex + "/v\\d+").permitAll()
.anyRequest().authenticated()
)
.sessionManagement((session) -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.httpBasic((httpBasic) -> httpBasic.realmName("Realm"))
.exceptionHandling((exceptions) -> exceptions.authenticationEntryPoint(new RestApiAuthenticationEntryPoint()))
.x509((x509) -> x509.userDetailsService(x509UserDetailsService))
.csrf(AbstractHttpConfigurer::disable);
return http.build();
}
}
@Configuration
@Order(2)
public class AnotherWebSecurtyConfigurator {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((requests) -> requests
.requestMatchers(HttpMethod.OPTIONS).denyAll()
.anyRequest().authenticated())
.csrf(AbstractHttpConfigurer::disable);
return http.build();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... security-6