Это также будет работать без упоминания какого-либо алгоритма.
public boolean isTokenValid(String token) {
try {
String certificate = "GET_YOUR_PUBLIC_CERTIFICATE_HERE"; //Either from REST call or reading from a cert file.
getPublicKeyAndParseToken(token, certificate);
return true;
} catch (IOException e) {
log.error("", e);
} catch (Exception e) {
log.error("", e);
log.error("JWT Not-Verified");
}
return false;
}
private void getPublicKeyAndParseToken(String token, String certificate) throws IOException, CertificateException {
log.debug("Certificate:: " + certificate); //Only for debugging purpose
InputStream is = new ByteArrayInputStream(certificate.getBytes(StandardCharsets.UTF_8));
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate cert = cf.generateCertificate(is);
PublicKey publicKey = cert.getPublicKey();
Jws parsedClaimsJws = Jwts.parser().setSigningKey(publicKey).parseClaimsJws(token);
log.debug("Header:: " + parsedClaimsJws.getHeader()); //Only for debugging purpose
log.debug("Body:: " + parsedClaimsJws.getBody()); //Only for debugging purpose
}
Не забудьте использовать версию '0.9.x' библиотеки jjwt.У меня ниже зависимости в моем build.gradle:
compile('io.jsonwebtoken:jjwt:0.9.1')