ASP.NET Core JwtBearerIdentity не работает - PullRequest
0 голосов
/ 04 мая 2018

После отправки заголовка в метод 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 
            };
        });

У меня две роли (Администратор / Пользователь), этот метод не работает, даже если я назначил его любому уполномоченному лицу.

...