Я хочу настроить сервер для аутентификации с использованием имени пользователя и пароля с использованием JWT. Я хочу разрешить публичное разрешение только для конечной точки регистрации , остальные требуют входа в систему. Но, очевидно, конечная точка регистрации все еще входит в JWTAuthenticationFilter и возвращает 200 без каких-либо действий, выполненных вообще. Для остальных конечных точек он возвращает 403, когда я ожидал бы 401. Ниже приведена конфигурация httpSecurity:
private static final String SIGN_UP_URL = "/users/sign-up";
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable().authorizeRequests()
.antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
.anyRequest().authenticated()
.and()
.addFilter(new JWTAuthenticationFilter(authenticationManager()))
.addFilter(new JWTAuthorizationFilter(authenticationManager()))
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
JWTAuthenticationFilter расширяет UsernamePasswordAuthenticationFilter JWTAuthorizationFilter расширяет BasicAuthenticationFilter
Редактировать: так выглядит мой запрос на публикацию:
@PostMapping("/sign-up")
public ResponseEntity<AddUserResult> signUp(@RequestBody AddUserCommand command) {
return new ResponseEntity<>(bus.executeCommand(command), HttpStatus.CREATED);
}