Я пытаюсь выполнить аутентификацию пользователя в Asp. net CORE с помощью JsonWebTokens (JWT).
Когда я запускаю метод входа в систему в своем приложении, токен создается правильно, но, когда я пытаюсь применить go к методу, ограниченному атрибутом [Authorize]
, я получаю несанкционированную ошибку 401.
Bearer error = \ "invalid_token \", error_description = \ "Подпись недействительна \ "
Вот как я настроил в методе ConfigureServices
в Startup
:
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x =>
{
var key = Encoding.ASCII.GetBytes("asdwda1d8a4sd8w4das8d*w8d*asd@#");
var signingKey = new SymmetricSecurityKey(key);
x.RequireHttpsMetadata = false;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
ValidAudience = "Audience",
ValidIssuer= "Issuer",
ValidateIssuer = false,
ValidateAudience = false
};
});
И вот как я настроил в configure в Startup
:
app.UseAuthentication();
Это генерация токена в LoginController
:
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim("UserID", login.IdUsuario.ToString())
}),
Expires = DateTime.UtcNow.AddDays(1),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes("asdwda1d8a4sd8w4das8d*w8d*asd@#")),
SecurityAlgorithms.HmacSha256Signature)
};
var tokenHandler = new JwtSecurityTokenHandler();
var securityToken = tokenHandler.CreateToken(tokenDescriptor);
var token = tokenHandler.WriteToken(securityToken);
return Ok( new { token } );
И это класс, который я ограничил, тот же класс, который запрещает доступ
[HttpGet]
[Authorize]
[Route("Profile")]
public IActionResult Profile()
{
string userID = User.Claims.First(c => c.Type == "UserID").Value;
var resultado = _UsuarioServicio.Profile(int.Parse(userID));
return Ok(resultado);
}
Я тестирую это с почтальоном, и я уже добавил соответствующий заголовок.
Большое спасибо, что нашли время посмотреть на это!