gpt4 book ai didi

c# - JWT TOKEN 生成 Client_Assertion

转载 作者:行者123 更新时间:2023-12-05 06:00:11 30 4
gpt4 key购买 nike

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

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

我找到了一些 Node.JS 代码,但我想使用 .Net Framework(不是 .Net Core)来实现Node.Js 代码可以在 this link 上看到

我需要用 C# 来完成。从哪里开始以及如何实现?

最佳答案

我使用了 .NET 库

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

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

这是我的示例代码

首先创建您的领地。这是您的 JWT 负载

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),
};

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

// Assuming you already have your key loaded into an RSACryptoServiceProvider
var key = new MicrosoftTokens.RsaSecurityKey(csp)
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha256);

现在您可以创建您的 token

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);

然后您可以将 token 写入字符串

var assertion = new JwtSecurityTokenHandler().WriteToken(jwt);

我认为 assertion 的值(value)就是你想要得到的

关于c# - JWT TOKEN 生成 Client_Assertion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67821344/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com