You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script生成RS256 JWT访问DocuSign时密钥报错如何解决

报错根因

Google Apps Script 内置的 Utilities.computeRsaSha256Signature() 方法不支持直接传入带PEM格式头、尾标识和换行符的私钥,你直接复制的Docusign官方生成的RSA私钥包含了多余格式字符,因此触发Invalid argument: key异常。

修正后的完整可运行代码
function createJWT(){
  const header = {
    alg: 'RS256',
    typ: 'JWT',
  };

  const now = Date.now();
  const expires = new Date(now);
  expires.setHours(expires.getHours() + 1);
  const payload = {
    exp: Math.round(expires.getTime() / 1000),
    iat: Math.round(now / 1000),
    iss: "替换为你的Docusign集成密钥(integrator key)",
    sub: "替换为你的Docusign用户ID(user id)",
    aud: "生产环境填account.docusign.com,沙箱环境填account-d.docusign.com",
    scope: "signature impersonation"
  };

  let toSign = Utilities.base64EncodeWebSafe(JSON.stringify(header)) + '.' + Utilities.base64EncodeWebSafe(JSON.stringify(payload));
  toSign = toSign.replace(/=+$/, '');

  // 填入Docusign给的完整RSA私钥,包含头尾标识
  let privateKey = "-----BEGIN RSA PRIVATE KEY-----\n<你的私钥内容>\n-----END RSA PRIVATE KEY-----";
  // 清洗私钥:移除格式标识、换行符和多余空格
  privateKey = privateKey.replace("-----BEGIN RSA PRIVATE KEY-----", "")
                         .replace("-----END RSA PRIVATE KEY-----", "")
                         .replace(/\n|\r/g, "")
                         .trim();

  const signatureBytes = Utilities.computeRsaSha256Signature(
    toSign,
    privateKey
  );
  const signature = Utilities.base64EncodeWebSafe(signatureBytes).replace(/=+$/, '');

  return toSign + '.' + signature;
}
额外注意事项
  • 生成JWT后可自行校验有效性,填入对应公钥即可验证签名是否正确
  • 调用Docusign获取access token接口时,需将生成的JWT作为请求参数发送,接口返回的access_token有效期为1小时
  • 确保你使用的Docusign账号已经完成了应用的同意授权流程,否则会返回权限相关报错

内容的提问来源于stack exchange,提问作者AttiER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:27:01