Estou com um problema no swagger, o mesmo não está reconhecendo o token que eu estou passando
Esse é o erro que está dando na IDE:
Caused by: java.lang.IllegalArgumentException: Illegal base64 character 20
at java.base/java.util.Base64$Decoder.decode0(Base64.java:848) ~[na:na]
at java.base/java.util.Base64$Decoder.decode(Base64.java:566) ~[na:na]
at java.base/java.util.Base64$Decoder.decode(Base64.java:589) ~[na:na]
at com.auth0.jwt.JWTDecoder.<init>(JWTDecoder.java:41) ~[java-jwt-4.2.1.jar:4.2.1]
... 63 common frames omitted
com.auth0.jwt.exceptions.JWTDecodeException: The input is not a valid base 64 encoded string. at com.auth0.jwt.JWTDecoder.(JWTDecoder.java:46) ~[java-jwt-4.2.1.jar:4.2.1] at com.auth0.jwt.JWTVerifier.verify(JWTVerifier.java:444) ~[java-jwt-4.2.1.jar:4.2.1] at br.alura.ForumHub.domain.infra.security.TokenService.getSubject(TokenService.java:40) ~[classes/:na] at br.alura.ForumHub.domain.infra.security.SecurityFilter.doFilterInternal(SecurityFilter.java:29) ~[classes/:na]
Aqui está falando que o erro se encontra na classe TokenService no método getSubject, porém eu já conferir e não tem nada de errado no código:
```
package br.alura.ForumHub.domain.infra.security;
import br.alura.ForumHub.domain.usuario.Usuario; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.JWTCreationException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service;
import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneOffset;
@Service public class TokenService {
@Value("${api.security.token.secret}")
private String secret;
public String gerarToken(Usuario usuario){
try {
var algorithm = Algorithm.HMAC256(secret);
return JWT.create()
.withIssuer("API Forum.Hub")
.withSubject(usuario.getLogin())
.withExpiresAt(dataExpiracao())
.sign(algorithm);
}catch(JWTCreationException exception){
throw new RuntimeException("erro ao gerar token jwt",exception);
}
}
public String getSubject(String tokenJWT){
try {
var algorithm = Algorithm.HMAC256(secret);
return JWT.require(algorithm)
.withIssuer("API Forum.Hub")
.build()
.verify(tokenJWT)
.getSubject();
}catch(JWTCreationException exception){
throw new RuntimeException("Token JWT inválido ou expirado!");
}
}
private Instant dataExpiracao(){
return LocalDateTime.now().plusHours(2).toInstant(ZoneOffset.of("-03:00"));
}
}
E tudo está normal lá no postman, todas as requisições funcionam com o token passado no postman, é apenas no swagger que está dando esse problema