Oauth2 - 解析令牌总是抛出异常

时间:2017-06-20 10:08:52

标签: oauth

我试图以这种方式解析令牌:

        Claims claims1 = Jwts.parser() 
                   .setSigningKey( publicKey)
                   .parseClaimsJws( token);

但我总是得到这个例外:

java.lang.IllegalArgumentException: Key bytes cannot be specified for RSA signatures.  Please specify a PublicKey or PrivateKey instance.

尽管如此,当我在https://jwt.io/中使用我的公开和 私钥 尝试相同的令牌时,会对其进行验证。两个问题:

  1. 是否需要指定私钥?如果是这样,我怎么能在我的代码中这样做?

  2. 事实上,我现在不关心签名验证 - 将来肯定。目前,我很乐意回答如何在不验证令牌的情况下解析令牌。

1 个答案:

答案 0 :(得分:0)

我假设你的publicKey是Base64编码的字符串。 在这种情况下,您需要对其进行解码并创建sun.security.rsa.RSAPublicKeyImpl的实例:

byte[] decode = TextCodec.BASE64.decode(publicKey);
Key key = new RSAPublicKeyImpl(decode);
Claims claims1 = Jwts.parser() 
               .setSigningKey(key)
               .parseClaimsJws(token);