我正在尝试读取由Google OpenID Connect的ID Token生成的JSON Web Token(JWT),以获取声明并使用jjwt库进行验证。 我已尝试了几种方法来使用下面的代码解决问题。
String publicKeyFromJsonFile = "-----BEGIN PUBLIC KEY-----xxxxxxx-----END PUBLIC KEY-----"
Claims claims = Jwts.parser()
.setSigningKey(publicKeyFromJsonFile)
.parseClaimsJws(jwt).getBody();
System.out.println(claims);
但我遇到了这个错误:
java.lang.IllegalArgumentException: Key bytes can only be specified for HMAC signatures. Please specify a PublicKey or PrivateKey instance
请问应该采取什么正确的方法?
KeyFactory
解析你的公钥,然后将生成的实例传递给你的库。 - Michał KrzywańskiX509EncodedKeySpec keySpecX509 = new X509EncodedKeySpec(Base64.getDecoder().decode(PUBLIC_KEY));
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(keySpecX509);
- John Erbynn