【发布时间】:2021-01-07 00:52:22
【问题描述】:
构建一个基本的应用程序,用户可以在其中使用 MEAN Stack 找到服务提供商,并且在谈判结束后,自动生成协议并必须由双方签署。 在生成 JWT 令牌以进行身份验证时遇到问题。 我遵循的步骤是:
- 生成获取用户同意的 url 并将其传递给前端。用户将被重定向,并且可以从那里授予权限。
var url = "https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature&client_id=42017946-xxxx-xxxx-xxxx-81b0ca97dc9a&redirect_uri=http://localhost:4200/authorization_code/callback";
res.status(200).json({
status: 1,
message: 'Fetched',
value: url
});
-
使用 URL 中的代码成功重定向后,API 调用后端生成 JWT 令牌。
-
令牌生成如下:
var jwt = require('jsonwebtoken');
var privateKey = fs.readFileSync(require('path').resolve(__dirname, '../../src/environments/docusign'));
const header = {
"alg": "RS256",
"typ": "JWT"
};
const payload = {
iss: '42017946-xxxx-xxxx-a5cd-xxxxxx',
sub: '123456',
iat: Math.floor(+new Date() / 1000),
aud: "account-d.docusign.com",
scope: "signature"
};
var token = jwt.sign(payload, privateKey, { algorithm: 'RS256', header: header });
上面使用的私钥来自 docusign 管理面板。
iss -> 针对我的应用程序的集成密钥。
sub -> 管理面板中用户符号下拉列表中的用户 ID
- 获取访问令牌
const axios = require('axios');
axios.post('https://account-d.docusign.com/oauth/token',
{
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: token
})
.then(resposne => {
console.log(response);
})
.catch(err => {
if (err.response) {
console.log(err);
} else if (err.request) {}
else {}
})
但我不断收到错误:{ error: 'invalid_grant', error_description: 'no_valid_keys_or_signatures' }
【问题讨论】:
标签: node.js docusignapi mean