首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWT令牌生成Client_Assertion

JWT令牌生成Client_Assertion
EN

Stack Overflow用户
提问于 2021-06-03 12:17:33
回答 1查看 931关注 0票数 3

我是JWT访问令牌生成方面的新手。我有公钥,私钥和ClientID。我需要生成Client_Assertion。

client_assertion: JWT (使用RS256作为签名算法,由客户机ID、公共证书和私钥签名)。

我已经找到了一些Node.JS代码,但是我想使用.Net框架(而不是.Net核心)来实现,Node.Js代码可以在此链接上看到

我需要用C#来做。从哪里开始,如何实现?

EN

回答 1

Stack Overflow用户

发布于 2022-03-14 01:45:09

我使用了.NET库

  • System.IdentityModel.Tokens.Jwt
  • Microsoft.IdentityModel.Tokens
  • Microsoft.IdentityModel.JsonWebTokens

我还假设,正如您所说的,您有一个私钥,并且已经将其加载到一个RSACryptoServiceProvider中。

这是我的示例代码

首先,建立你的权利主张。这是您的JWT有效载荷

代码语言:javascript
复制
var claims = new Claim[]
{
    new Claim(MicrosoftJwt.JwtRegisteredClaimNames.Sub, "your subject"),
    new Claim(MicrosoftJwt.JwtRegisteredClaimNames.Iat, DateTime.Now.ToEpochSeconds().ToString(), ClaimValueTypes.Integer),
    new Claim(MicrosoftJwt.JwtRegisteredClaimNames.Exp, DateTime.Now.AddMinutes(60).ToEpochSeconds().ToString(), ClaimValueTypes.Integer),
};

然后,您需要使用私钥配置您的签名凭据。

代码语言:javascript
复制
// Assuming you already have your key loaded into an RSACryptoServiceProvider
var key = new MicrosoftTokens.RsaSecurityKey(csp)
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha256);

现在您可以创建您的令牌

代码语言:javascript
复制
var jwt = new JwtSecurityToken(
    issuer            : issuer,
    audience          : audience,
    claims            : claims,
    signingCredentials: signingCredentials
);
// You can add extra items to your Header if necessary
jwt.Header.Add("kid", deviceId);

然后,您可以将令牌写入字符串。

代码语言:javascript
复制
var assertion = new JwtSecurityTokenHandler().WriteToken(jwt);

我认为assertion的价值是你想要得到的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67821344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档