После отправки заголовка в метод api он выдает ошибку 401 для меня. Я не понимаю почему. Вот моя конфигурация.
Контроллер API
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class AdminApiController : Controller
{
private readonly IAdminService _adminService;
public AdminApiController(IAdminService adminService)
{
_adminService = adminService;
}
[HttpPost]
[Authorize(Roles = "Admin")]
[Route("/api/rooms/add")]
public async Task<IActionResult> AddRoom([FromBody]QuestRoomDto room)
{
return Ok(await _adminService.AddRoom(room));
}
}
Конфигурация
services.AddIdentity<Customer, CustomerRole>()
.AddEntityFrameworkStores<CustomerDbContext>()
.AddDefaultTokenProviders();
//Configure Jwt authentication
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = configuration["JwtIssuer"],
ValidAudience = configuration["JwtIssuer"],
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"])),
ClockSkew = TimeSpan.Zero
};
});
У меня две роли (Администратор / Пользователь), этот метод не работает, даже если я назначил его любому уполномоченному лицу.