我正在遵循此处列出的稀疏说明:https ://metamind.readme.io/docs/generate-an-oauth-token-using-your-key
我需要能够生成不记名令牌,以便能够直接从 .net,特别是 .net 4.5 访问 Einstein 服务。
由于对 RSACryptoServiceProvider.ImportRSAPrivateKey 的支持在 .net 5 之前不可用,因此我已将我的 pem 文件(从 salesforce 下载)转换为 xml 格式(使用https://superdry.apphb.com/tools/online-rsa-key -converter),我正在使用它来签署 JWT 断言。我得到一个编码断言,但是当我将它发布到https://api.einstein.ai/v2/oauth2/token服务时,我不断收到“无效令牌”消息。
这是我的代码:
Claim[] claims = new[] {
new Claim(JwtRegisteredClaimNames.Sub, this.Username),
new Claim(JwtRegisteredClaimNames.Aud, this.Endpoint.ToString()),
new Claim(JwtRegisteredClaimNames.Exp, ((int)expiryUnixTimeStamp).ToString())
};
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(this.RsaXmlString);
RsaSecurityKey rsaSecurityKey = new RsaSecurityKey(provider);
SigningCredentials signingCredentials = new SigningCredentials(rsaSecurityKey, SecurityAlgorithms.RsaSha256);
JwtSecurityToken jwtSecurityToken = new JwtSecurityToken(
new JwtHeader(signingCredentials),
new JwtPayload(claims)
);
string jwtToken = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
我检查了所有参数。我可以使用相同的 pem 密钥和用户名成功创建承载令牌,使用浏览器界面,那么为什么它在代码中失败?