У меня возникла проблема, когда всякий раз, когда я подписываю токен, я разбираю его, и он не бросает никаких исключений подписи.Проверка подлинности JWT с помощью Java
Вы можете видеть, что ключ другой, но он дает мне правильный ответ.
public class JwtUtil {
public String parseToken(String token) {
try {
Jws<Claims> jwt = Jwts.parser()
.setSigningKey("[email protected]")
.parseClaimsJws(token);
System.out.println(jwt.getBody().getSubject());
return "Valid";
} catch (SignatureException jwtException) {
jwtException.printStackTrace();
return null;
}
}
public String generateToken() {
Claims claim = Jwts.claims();
claim.put("GivenName", "Johnny");
claim.put("Surname", "Rocket");
claim.put("Email", "[email protected]");
return Jwts.builder().setHeaderParam("typ", "JWT").setClaims(claim)
.setIssuer("Online JWT Builder")
.setAudience("www.example.com").setSubject("[email protected]")
.signWith(SignatureAlgorithm.HS256, "[email protected]").compact();
}
public static void main(String[] args) {
JwtUtil jwtUtil = new JwtUtil();
String token = jwtUtil.generateToken();
System.out.println(token);
JwtUtil jwtUtil1 = new JwtUtil();
jwtUtil1.parseToken(token);
}
}
Можете ли вы пост консольный выход? Также попробуйте удалить 'setHeaderParam (« typ »,« JWT »)' и посмотреть, не имеет значения. – qwertz
Выход: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJHaXZlbk5hbWUiOiJKb2hubnkiLCJTdXJuYW1lIjoiUm9ja2V0IiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiaXNzIjoiT25saW5lIEpXVCBCdWlsZGVyIiwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSJ9.6rMHAdhvNyfe0Mqc6dgZ96QqEKzp4iEU3dle7eSIHMo Я также пытался путем удаления заголовка, но получаю тот же результат – ashishl