Olá Arthur, tudo bem?
Entendo sua dúvida e posso te ajudar com isso.
O erro 403 Forbidden é retornado quando o cliente faz uma solicitação válida, mas o servidor se recusa a responder. Já o erro 401 Unauthorized é retornado quando o cliente não está autenticado e precisa fornecer credenciais válidas para acessar o recurso.
Para retornar o erro 401 quando o token não é enviado, você pode configurar um authenticationEntryPoint customizado no Spring Security. Dessa forma, quando o cliente tentar acessar um recurso protegido sem enviar o token, o authenticationEntryPoint personalizado será chamado e retornará o erro 401.
Um exemplo de como configurar um authenticationEntryPoint personalizado no Spring Security seria:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/api/**").authenticated()
.and()
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint)
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
No exemplo acima, a classe JwtAuthenticationEntryPoint é o authenticationEntryPoint personalizado que retorna o erro 401 quando o token não é enviado.
Espero ter ajudado e bons estudos!