Конфигурация Spring Security: POST-запрос к конечной точке возвращает ошибку через API Gateway, но работает через обычный порт

Я работаю над приложением Spring Boot с Spring Security и столкнулся с проблемой в конфигурации безопасности.

Я хочу разрешить неаутентифицированный доступ к конечной точке /auth/register для регистрации пользователей.
Однако, когда я отправляю POST-запрос к /auth/register через API Gateway, я получаю ответ "403 Forbidden".

В то же время, при отправке запроса напрямую на обычный порт приложения всё работает корректно.

Вот моя конфигурация безопасности:

@Configuration
@EnableWebSecurity
public class AuthConfig {

    @Bean
    public UserDetailsService userDetailsService(){
        return new CustomUserDetailsService();
    }


    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http.csrf().disable()
                .authorizeHttpRequests()
                .requestMatchers("/auth/register").permitAll()
                .and()
                .build();
    }


    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
        return config.getAuthenticationManager();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public AuthenticationProvider authenticationProvider(){
        DaoAuthenticationProvider authenticationProvider=new DaoAuthenticationProvider();
        authenticationProvider.setUserDetailsService(userDetailsService());
        authenticationProvider.setPasswordEncoder(passwordEncoder());
        return authenticationProvider;
    }


}

@RestController
@RequestMapping("/auth")
public class AuthController {


    @PostMapping("/register")
    public String addNewUser(@RequestBody UserCredential userCredential){
        return authService.saveUser(userCredential);
    }

}
@Service
public class AuthService {

    @Autowired
    private UserCredentialRepository repository;

    @Autowired
    private PasswordEncoder passwordEncoder;


    public String saveUser(UserCredential credential){
        credential.setPassword(passwordEncoder.encode(credential.getPassword()));
        repository.save(credential);
        return "user added to the system";
    }

}

Вот gateway properties:

spring.cloud.gateway.routes[2].id=auth-service
spring.cloud.gateway.routes[2].uri=http://localhost:8083
spring.cloud.gateway.routes[2].predicates[0]=Path=/auth/**
spring.cloud.gateway.routes[2].filters[0]=RewritePath=/auth/(?<segment>.*), /${segment}
spring.cloud.gateway.routes[2].filters[1]=AddRequestHeader=X-Request-ServiceName, auth-service

Вот auth properties:

server.port=8083
spring.application.name=auth-service
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
logging.level.org.springframework.security=DEBUG

o.s.security.web.FilterChainProxy : Securing POST /auth/register o.s.security.web.FilterChainProxy : Secured POST /auth/register Hibernate: insert into user_credential (email, name, password) values (?, ?, ?) : Set SecurityContextHolder to anonymous SecurityContext o.s.security.web.FilterChainProxy : Securing POST /register o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8083/register?continue to session o.s.s.w.a.Http403ForbiddenEntryPoint : Pre-authenticated entry point called. Rejecting access o.s.security.web.FilterChainProxy : Securing POST /error o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8083/error?continue to session Pre-authenticated entry point called. Rejecting access


Ответы (0 шт):