Boa Noite, Estou desenvolvendo um app android que se comunica com um servidor java via REST e usa JWT para fazer a autenticação e autorização e quando faço uma requisição (no caso a 1º sem o token ) a api do jwt me devolve o token e o adiciono na resposta, até este ponto tudo ok. Na requisição com o token eu sempre recebo a mensagem
io.jsonwebtoken.SignatureException: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
Pesquisando um pouco vi que sugerem fazer a manipulação de Chave Pública e Privada é julgo um pouco complexo visto que no curso de mean mostra o uso de forma mais simples. Se alguém puder ajudar ficarei grato. Segue abaixo também os métodos responsáveis pela geração e parse do token.
GERAÇÃO
public String generateToken(String username) {
Map<String, Object> claims = new HashMap<String, Object>();
claims.put(CLAIM_KEY_USERNAME, username);
claims.put(CLAIM_KEY_AUDIENCE, "mobile");
claims.put(CLAIM_KEY_CREATED, new Date());
return generateToken(claims);
}
String generateToken(Map<String, Object> claims) {
JwtBuilder buider=Jwts.builder();
buider=buider.setClaims(claims);
buider=buider.setExpiration(generateExpirationDate());
buider=buider.signWith(SignatureAlgorithm.HS512, "secret");
return buider.compact();
}
Parse do Token
private Claims getClaimsFromToken(String token) {
Claims claims;
try {
JwtParser parser=Jwts.parser();
parser=parser.setSigningKey("secret");
Jws<Claims> jws=parser.parseClaimsJws(token);
claims=jws.getBody();
} catch (Exception e) {
e.printStackTrace();
claims = null;
}
return claims;
}