Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

[Dúvida] Metodo verify não esta funcionando

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

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?

11 respostas

Oi!

O problema está nessa sua linha de código:

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

O correto é:

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

Bons estudos!

Boa noite professor fiz as auteraçoes que o senhor passor e continua dando o mesmo erro esta com token falido, esta com a modificação no filter que e pra bater primeiramente no meu filter e validar o token depois que bate no filter do spring mais perssiste o mesmo erro

Manda aqui os códigos completos das suas classes TokenService e SecurityFilter.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A princípio o código está certinho.

Dispara uma requisição para efetuar login e veja se vai ser devolvido um token na resposta e depois usa esse novo token para testar outra requisição.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Professor encontrei o erro estava passado o token com as "aspas" muito obrigado mestre!!