gpt4 book ai didi

c# - 如何使用.net core中的SecurityTokenDescriptor将kid添加到jwt header

转载 作者:行者123 更新时间:2023-12-02 10:13:56 25 4
gpt4 key购买 nike

我使用 .netcore 2 和 JwtSecurityToken 来生成 token

            var jwtSecurityToken = new JwtSecurityToken(
issuer: issuer,
audience:issuer,
claims: claims,
expires: DateTime.Now.AddMinutes(5),
signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
);

jwtSecurityToken.Header.Add("kid", requestAPIKey);

现在,因为我使用 Idenity,所以我已从 JwtSecurityToken 切换到安全 token 描述符,我的代码是:

            var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = creds
};

我的问题是在使用安全 token 描述符时如何将 child 添加到我的 token header ?在 JwtSecurityToken 中,我使用以下代码添加它:

jwtSecurityToken.Header.Add("kid", requestAPIKey);

我如何使用 SecurityTokenDescriptor 做同样的事情?谢谢你!

最佳答案

这是我使用过的代码片段:

var tokenHandler = new JwtSecurityTokenHandler(); 
var key = Encoding.UTF8.GetBytes("Secret");
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, UserId),
new Claim(name, value),
new Claim(name, value)
}),

Expires = DateTime.UtcNow.AddMinutes(5),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)

};

var token = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);
token.Header.Add("kid", "");

token.Payload.Remove("iss");
token.Payload.Add("iss", "your issuer");

var tokenString = tokenHandler.WriteToken(token);

关于c# - 如何使用.net core中的SecurityTokenDescriptor将kid添加到jwt header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53017653/

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