Все исключения преобразуются в HTTP 401 на общедоступных конечных точках.

у меня проблема с Spring Boot Starter Security V3.0.0

Для этой конфигурации:

      
    @Bean
    public SecurityFilterChain filterChain( final HttpSecurity http ) throws Exception {
        http
                .cors().and().csrf().disable()
                .sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS )
                .and()
                .anonymous()
                .and()
                .authorizeHttpRequests()
                .requestMatchers( HttpMethod.OPTIONS ).permitAll()
                .requestMatchers( "/system/**" ).hasRole( new SecurityRole( Role.ROLE_SYSTEM ).toString() )
                .requestMatchers( "/admin/**" ).hasRole( new SecurityRole( Role.ROLE_AUTH_ADMIN ).toString() )
                .requestMatchers( "/identity/**" ).hasRole( new SecurityRole( Role.ROLE_AUTH_IDENTITY ).toString() )
                .requestMatchers( "/guest/**" ).permitAll()
                .anyRequest().authenticated()
                .and()
                .oauth2ResourceServer( OAuth2ResourceServerConfigurer::jwt );

        return http.build();
    }

Все исключения, созданные конечной точкой «/guest/**», преобразуются в HTTP 401 без тела. Даже когда я выдаю HTTP 409 с этим классом:

      @ResponseStatus( code = HttpStatus.CONFLICT )
public class HttpConflictException extends RuntimeException {
    public HttpConflictException( String message ) {
        super( message );
    }
}

ВАЖНО: если исключение не выдается, запрос работает

Если эта линия

      .requestMatchers( "/guest/**" ).permitAll()

заменяется этим

       .requestMatchers( "/**" ).permitAll()

оно работает. Но этот вариант кажется слишком опасным. Я что-то не понимаю? Я не видел в документации ничего, что могло бы помочь с этой проблемой.

Зависимости:

      <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-resource-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-jose</artifactId>
</dependency>

Спасибо.

0 ответов

Другие вопросы по тегам