Java微服务集成DocuSign遇PemObject空指针错误求助
DocuSign JWT认证私钥处理问题排查思路
检查私钥字符串的PEM格式完整性
从Azure Vault获取的私钥字符串必须包含完整的PEM标记:开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----,且中间的密钥内容需保留换行符。部分密钥存储会自动去除换行或截断标记,导致PemReader无法识别,返回null的PemObject。用StringReader正确封装私钥字符串
不能直接将字符串转字节后传入,需通过StringReader将字符串转为字符流,再交给PemReader解析,示例代码如下:String privateKeyStr = myConfigMap.getVaultSecretsMap().get("privatekey"); try (PemReader pemReader = new PemReader(new StringReader(privateKeyStr))) { PemObject pemObject = pemReader.readPemObject(); if (pemObject == null) { throw new IllegalArgumentException("私钥不符合PEM格式要求"); } byte[] privateKeyBytes = pemObject.getContent(); // 后续将privateKeyBytes用于JWT Token请求 apiClient.requestJWTUserToken(clientId, userId, oAuthBasePath, privateKeyBytes, expiresIn); } catch (IOException e) { // 处理解析异常 e.printStackTrace(); }确认私钥未加密
DocuSign JWT认证要求使用未加密的RSA私钥。如果Vault中存储的是加密PEM(开头为-----BEGIN ENCRYPTED PRIVATE KEY-----),PemReader无法直接解析,需提前解密或更换为未加密私钥存储。确保字符串转码正确
转换字节时指定UTF-8编码,避免默认编码导致字符损坏:privateKeyStr.getBytes(StandardCharsets.UTF_8);
内容的提问来源于stack exchange,提问作者user1015388
相关产品推荐
相关产品推荐

