Я пытался реализовать «PwdLess» как простой механизм аутентификации без пароля для моего приложения ASP.Net Core 2.2. Он успешно генерирует JWT, которые я пытаюсь использовать в бэкэнд-API моего приложения, при этом JWT передается через Authorization: Bearer <token>
.
В моем методе Startup.ConfigureServices у меня есть следующий код:
// JWT authentication
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "MYISSUERSTRINGHERE"
ValidAudience = "MYAUDIENCESTRINGHERE"
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes("MYSECRETHERE"))
};
});
// ASP.NET Core MVC
services.AddMvc();
В контроллере по методу, к которому я хочу разрешить доступ, у меня есть:
[Authorize]
public IActionResult SomeMethod()
{
}
Это выдает 401, что сбивает с толку ... Тем более, что если я вместо этого использую следующий код в моем контроллере, все будет работать как положено:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public IActionResult ValidateToken()
{
}
Я не понимаю, чего мне не хватает в моём Startup.ConfigureServices, что делает необходимым значение AuthenticationSchemes для моего атрибута Authorize!
Пожалуйста, вы можете пролить свет на ошибку моих путей?