ورود

View Full Version : رفع خطای Bearer error=invalid_token



mmbguide
یک شنبه 27 اسفند 1402, 19:45 عصر
سلام خدمت دوستان

در یک پروژه Web Api سیستم احرازهویت JWT Token را فعال کردم ولی زمانی که از طریق Postman میخوام به یک متد Authorize شده دسترسی داشته باشم خطای invalid token برمیگرده. میشه راهنمایی کنید که اشکال ازکجاست؟

اطلاعات فایل appsettings.json

"Authentication": {
"Key": "Yh2k7QSu4l8CZg5p6X3Pna9L0Miy4D3Bvt0JVr87UcOj69Kqw5 R2Nmf4FWs03Hdx",
"Issuer": "Server",
"Audience": "Client"
},


فعالسازی سرویس در فایل Program

builder.Services.AddAuthentication(JwtBearerDefaul ts.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.IncludeErrorDetails = true;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Authentication:Issuer"],
ValidAudience = builder.Configuration["Authentication:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Authentication:Key"])),
};
});


متد تولید Token

public IActionResult Login([FromBody] User user)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Name, user.Username),
new Claim(ClaimTypes.UserData, user.Username),
new Claim(ClaimTypes.Role,"Admin"),
};

var securityKey = new SymmetricSecurityKey(
Encoding.ASCII.GetBytes(_configuration["Authentication:Key"]));

var signingCredentials = new SigningCredentials(
securityKey,
SecurityAlgorithms.HmacSha256);

var jwtSecurityToken = new JwtSecurityToken(
_configuration["Authentication:Issuer"],
_configuration["Authentication:Audience"],
claims,
DateTime.Now,
DateTime.Now.AddHours(1),
signingCredentials
);

var token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityTo ken);

return Ok(token);
}

mmbguide
یک شنبه 27 اسفند 1402, 21:06 عصر
مشکل رو پیدا کردم
من پکیج زیر رو نصب کرده بودم:
Microsoft.IdentityModel.JsonWebTokens
پکیج زیر رو نصبب کردم درست شد:
System.IdentityModel.Tokens.Jwt

mmbguide
یک شنبه 27 اسفند 1402, 21:11 عصر
فقط یک سوال برام پیش اومده: اگر Token را در سایت jwt.io وارد کنم اطلاعات مربوط به نوع hash و داده های بخش Claims رو هم براحتی نمایش میده. چطور میشه بخش Payload را هم کدگذاری کرد؟