.net core Docusign JWT身份验证dotnet核心问题
我需要用JWT Grant在docusign中获得访问令牌。在那里我把签名部分弄糊涂了。 我就是这样做的 第一个创建的令牌.net core Docusign JWT身份验证dotnet核心问题,.net-core,docusignapi,.net Core,Docusignapi,我需要用JWT Grant在docusign中获得访问令牌。在那里我把签名部分弄糊涂了。 我就是这样做的 第一个创建的令牌 var token = new JwtBuilder() .WithAlgorithm(new HMACSHA256Algorithm()) .WithSecret(privateKey) .AddClaim("i
var token = new JwtBuilder()
.WithAlgorithm(new HMACSHA256Algorithm())
.WithSecret(privateKey)
.AddClaim("iss", clientId)
.AddClaim("sub", accountId)
.AddClaim("iat", DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeSeconds())
.AddClaim("aud", aud)
.AddClaim("scope", "signature impersonation")
.Encode();
在这里,docusign的私钥被添加为机密
这是邮递员的要求
url: https://account-d.docusign.com/oauth/token
body: {
"grant_type":"urn:ietf:params:oauth:grant-type:jwt-bearer",
"assertion":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI4YzNkMDM0My01ZGQzLTQ3YjQtOWFkZi1iNjYxNTc4NjRmOWYiLCJzdWIiOiIwOWRjMWE4OC03Zjk1LTQ3Y2YtYTJkOC00NzQxYTc0N2E2NzUiLCJpYXQiOjE2MDM4Nzg3OTIsImF1ZCI6ImFjY291bnQtZC5kb2N1c2lnbi5jb20iLCJzY29wZSI6InNpZ25hdHVyZSBpbXBlcnNvbmF0aW9uIn0.QmbBst9_QOW9vZlI1CnVaUmv3AlNeWItRnPNiCE7vZ4"
}
method: post
它返回了错误的请求。下面是错误消息
{
"error": "invalid_grant",
"error_description": "no_valid_keys_or_signatures"
}
如何解决这个问题,请帮助我
< P>我强烈建议您考虑使用我们的,这将为您设置一切,并使用C*SDK。它已经是.NET核心了。 运行它之后,这是第一次授予身份验证代码。 要更改为JWT,您可以将显示quickstart=“true”的配置修改为“false”,或者您可以使用JWT注销并重新登录。我已经解决了这个问题 JWT令牌签名不是有效的算法。我必须添加docusign应用程序私钥才能添加。 我将私钥存储在一个名为private.key的文件中 这是密码 var privateKeyfilePath = Path.Combine(Directory.GetCurrentDirectory(), "SignDocuments", "private.key");
string privateKey = System.IO.File.ReadAllText(privateKeyfilePath);
var rsaPrivate = RSA.Create();
rsaPrivate.ImportRSAPrivateKey(Convert.FromBase64String(privateKey), out _);
var privateKeyRSA = new RsaSecurityKey(rsaPrivate);
SigningCredentials signingCredentials = new SigningCredentials(privateKeyRSA, SecurityAlgorithms.RsaSha256);
var claims = new Claim[]
{
new Claim("iss", clientId),
new Claim("sub", APIUsername),
new Claim("iat", DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeSeconds()+ ""),
new Claim("aud", aud),
new Claim("scope", "signature impersonation"),
};
var jwt = new JwtSecurityToken(
signingCredentials: signingCredentials,
claims: claims,
notBefore: DateTime.UtcNow,
expires: DateTime.UtcNow.AddHours(1),
issuer: clientId
);
之后,我们必须获得内部申请的同意。
为此,请使用此。将clientId替换为您的
记住在docusign中创建的应用程序中添加相同的重定向url。
url作用域必须是作用域=签名%20模拟(签名和模拟都需要)
在那份文件之后,我要求接受它
您可以在“已连接的应用”下的docusign管理配置文件中检查您的应用是否已获得同意
最后您可以获得访问令牌谢谢您的回复,但这不是我所期望的。不过我已经解决了这个问题。再次感谢