为DocuSign创建JWT

时间:2020-10-22 13:25:57

标签: node.js jwt docusignapi

伙计,你好吗?

我想知道是否有人可以帮助我解决这个问题...

我正在尝试使用JWT将API与DocuSign集成。我从DocuSign API收到以下错误:

data: {
      error: 'invalid_grant',
      error_description: 'no_valid_keys_or_signatures'
    }

根据JWT正确但发生的某些声明不正确的文档,

这是文档链接:https://developers.docusign.com/platform/auth/jwt/jwt-get-token

我有点讨厌,因为我提出的声明与文档所要求的完全一样。

连接授权已经完成。

这是我用来创建JWT的数据:

 const data = {
    iss: req.body.iss,
    sub: req.body.sub,
    name: req.body.name,
    iat: timeStamp,
    exp: timeStamp + 60 * 60 * 1000,
    aud: req.body.aud,
    scope: req.body.scope,
  };

请求是:

{
    "iss": "INTEGRATION_KEY",
    "sub": "ACCOUNT_ID",
    "name": "Ruben Acevedo",
    "aud": "account-d.docusign.com",
    "scope": "signature impersonation"
}

(出于隐私目的更改了键的值)

我正在这样创建令牌:

const createToken = (data) => {
  const privateKey = fs.readFileSync(key);

  const token = jwt.sign(data, privateKey, {
    algorithm: "RS256",
  });

  return token;
};

对docusign api的发布请求是这样的:

axios({
    method: "post",
    url: "https://account-d.docusign.com/oauth/token",
    data: `grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=${token}`,
  })
    .then((response) => console.log(response))
    .catch((e) => console.log(e));
});

你们可以帮助新手交付他的项目吗?哈哈

提前谢谢大家!

1 个答案:

答案 0 :(得分:1)

鲁本,我们做得很好,感谢您的提问。 我建议您尝试花费2-3分钟的时间为Node.js生成DocuSign quickstart,并查看其中的JWT选项是否对您有用(您必须先使用Auth Code Grant运行它,或更改quickstart =“ true “”(在配置文件中使用JWT)。

这将为您提供使用Node SDK的工作版本。它还将为您设置所有内容(RSA密钥,IK等),这也可能是您遇到的问题。

如果可行,您可以使用它,也可以尝试查看代码中做错了什么。