Spring框架和公钥的编码/解码

时间:2018-01-18 20:09:43

标签: spring spring-security oauth-2.0 rsa

我正在尝试创建一个新的RsaVerifier来检查公钥:

JwtHelper.decodeAndVerify(token, verifier);

我相信它是一个有效的公钥。我正在从浏览器中正确复制它。它确实以返回字符开头。它实际上有几个地方:

-----BEGIN PUBLIC KEY-----\nMIIBI.....

创建RsaVerifier时失败。

SignatureVerifier verifier = null;
if (key.startsWith("-----BEGIN PUBLIC KEY-----")) {
    logger.log("Trying to get key verifier...");
    verifier =  new RsaVerifier(key);  //FAILS HERE
    ...

具体来说,它在RsaKeyHelper的这个片段的最后一行失败了:

private static Pattern PEM_DATA = Pattern.compile("-----BEGIN (.*)-----(.*)-----END (.*)-----", Pattern.DOTALL); 

static KeyPair parseKeyPair(String pemData) { 
  Matcher m = PEM_DATA.matcher(pemData.trim()); 

  if (!m.matches()) { 
   throw new IllegalArgumentException("String is not PEM encoded data"); 
  } 

  String type = m.group(1); 
  final byte[] content = b64Decode(utf8Encode(m.group(2)));  //FAILS HERE

有错误:

Exception validating token : 
org.springframework.security.jwt.codec.InvalidBase64CharacterException: Bad 
Base64 input character decimal 92 in array position 0

我知道小数92是正斜杠,事实上我在位置0有一个。但是,我已尝试删除返回字符,但它并未将其识别为有效字符。这是RsaKeyHelper类的链接:

https://www.programcreek.com/java-api-examples/index.php?source_dir=spring-security-oauth-master/spring-security-jwt/src/main/java/org/springframework/security/jwt/crypto/sign/RsaKeyHelper.java
我正在努力弄清楚如何将此密钥作为一个被接受的字符串传递。

0 个答案:

没有答案