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

[Dúvida] método de verificação não consegue validar o tokenJWT

Opa

estou com um bug ao validar o tokenJWT

No meu método para validar o Token JWT , o método verificação não valida o token e sempre cai na exceção.

    public String getSubject(String tokenJWT) {

        try {
            var algoritmo = Algorithm.HMAC256(secret);
            return JWT.require(algoritmo)
                    .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

@Component
public class SecurityFilter extends OncePerRequestFilter {

    @Autowired
    private TokenService tokenService;
    
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        var tokenJWT = recuperarToken(request);
        var subject = tokenService.getSubject(tokenJWT);
        System.out.println(subject);
        
        filterChain.doFilter(request,response);


    }

    private String recuperarToken(HttpServletRequest request) {
        var authorizationHeader = request.getHeader("Authorization");
        if(authorizationHeader == null){
            throw new RuntimeException("Token não enviado");
        }
        return authorizationHeader.replace("Bearer ", "");
    }
}

eu até consigo dar um print no tokenJWT e ver ele .... porem na hora de validar cai na exceção

2 respostas

Oi!

Dá uma olhadinha aqui: https://cursos.alura.com.br/course/spring-boot-aplique-boas-praticas-proteja-api-rest/task/130894

E outra coisa, nesse seu if:

if(authorizationHeader == null){
    throw new RuntimeException("Token não enviado");
}

Você não pode lançar exception quando o token não é enviado, pois na requisição de login o token não será enviado, pois é justamente a requisição para se obter um token.

solução!

na verdade nem era isso....

o token realmente estava expiradado agora como eu não sei kkkkk

resolvi aqui copiando um novo token e deu certo