1
resposta

[Dúvida] Existe alguma forma de ignorar o Authorization em rotas públicas, no lado do servidor?

Por mais que a rota seja pública, pode ocorrer casos em que o "Authorization" seja enviado no header da requisição. Existe alguma forma de ignora-lo do lado do servidor, somente nas rotas públicas?

1 resposta

Olá Matheus, tudo bem?

Sim, é possível ignorar o header "Authorization" em rotas públicas no lado do servidor. Uma forma de fazer isso é utilizando um interceptor no Spring, que pode ser configurado para ser aplicado somente em determinadas rotas ou em todas as rotas. No interceptor, é possível verificar se a rota é pública e, caso seja, remover o header "Authorization" da requisição. Isso pode ser feito através do método removeHeader do objeto HttpServletRequest, que representa a requisição recebida pelo servidor. Exemplo:

@Component
public class AuthorizationInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // Verifica se a rota é pública
        if (isPublicRoute(request)) {
            // Remove o header Authorization da requisição
            request.removeHeader("Authorization");
        }
        return true;
    }

    private boolean isPublicRoute(HttpServletRequest request) {
        // Lógica para verificar se a rota é pública
        // Pode ser feita com base em alguma anotação nos controllers ou em um arquivo de configuração, por exemplo
    }
}

Depois, é preciso registrar o interceptor no WebMvcConfigurer do Spring, para que ele seja aplicado nas rotas corretas:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Autowired
    private AuthorizationInterceptor authorizationInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authorizationInterceptor);
    }
}

Com essa implementação, o header "Authorization" será removido somente nas rotas públicas configuradas no interceptor.