Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método verify não consegue validar o tokenJWT

Prezado, me deparei com um probleminha aqui que não consegui resolver.

No meu método para validar de o Token JWT é válido, o método verify(tokenJWT) não valida o token e sempre cai na exceção.

Segue o método

//Codigo da Api JWT para validar o token JWT
    public String getSubject(String tokenJWT){
        try {
            var algorithm = Algorithm.HMAC256(secret);
            return JWT.require(algorithm)
                    .withIssuer("API Voll.med")
                    .build()
                    .verify(tokenJWT)
                    .getSubject();
        } catch (JWTVerificationException exception) {
            throw new RuntimeException("Token JWT inválido ou expirado!");
        }
    }

O método getSubject esta sendo chamado na classe SecurityFilter mapeada com a anotation @Component. Nessa classe, sem chamar o método da classe que valida o token, a fila flui normalmente sem erro, porem o token não é validado. QUando aciono o método pra validar, ai cai na exceção de que o tokem não é valido ou expirou.

private String recuperarToken(HttpServletRequest request){
        var authorizationHeader = request.getHeader("Authorization");
        if (authorizationHeader == null){
            throw new RuntimeException("Token JWT não foi enviado ao cabeçalho Authorization!");
        }

        return authorizationHeader.replace("Bearer", " ");
    }

Não consegui identificar nenhum erro nos códigos, mas mesmo assim, o tokem sempre é invalido.

Alguem sabe como resolver?

1 resposta
solução!

Problema resolvildo kkk.

Depois de muito tentar, acabei descobrindo um erro que não foi nada lógico pra mim. No retorno desse método, "Bearer" , " ", espaço entre as aspas, e no "Brearer" tem um espaço que não coloquei Então mudei essa linha de código:

        return authorizationHeader.replace("Bearer", " ");

Por esta

        return authorizationHeader.replace("Bearer ", "");

E o problema foi resolvido.