C#授权JWT令牌



我与Postman有问题。当生成象征性的真相招摇时,我得到JWT。在jwt.io中检查令牌时,它可以读取令牌jwti.io成功

但当把它添加到poster中时,它显示错误401。邮递员401

有人知道可能是什么问题吗?

public class TokenHandler : ITokenHandler
{
private readonly IConfiguration _configuration;
public TokenHandler(IConfiguration configuration)
{
this._configuration = configuration;
}
public Task<string> CreateTokenAsync(User user)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]));

// create Claims
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.GivenName, user.FirstName));
claims.Add(new Claim(ClaimTypes.Surname, user.LastName));
claims.Add(new Claim(ClaimTypes.Email, user.EmailAddress));

//loop into roles of users
user.Roles.ForEach((role) =>
{
claims.Add(new Claim(ClaimTypes.Role, role));
});
var credentials = new SigningCredentials(key,SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
_configuration["Jwt:Issuer"],
_configuration["Jwt:Audience"],
claims,
expires: DateTime.Now.AddMinutes(15),
signingCredentials: credentials);
return Task.FromResult(new JwtSecurityTokenHandler().WriteToken(token));
}

错误出现在Program.cs 中

//injected token validations by me
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => options.TokenValidationParameters =
new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
(builder.Configuration["Jwt:Key"]))
});

在最后一行builder.Configuration["Jwt:Key"]上,我之前添加了CCD_ 2。将其更改为Key fixed it

最新更新