[英]C# Authorization JWT token
我對 Postman 有疑問。 生成令牌真值 swagger 時,我得到 JWT。 在檢查 jwt.io 中的令牌時,它可以讀取令牌jwti.io 成功
但是在 postman 中添加它時顯示錯誤 401。 postman 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"]
上,我在builder.Configuration["Jwt:Audience"]
之前添加了。 將其更改為 Key 修復了它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.