. NET Сбой авторизации на основе ролей Core 3.1, получение исключения 403 - PullRequest
6 голосов
/ 05 февраля 2020

Я пытаюсь использовать библиотеку Microsoft Identity для выполнения авторизации на основе ролей, и у меня не получается.

  • Я могу аутентифицировать пользователя
  • Я вижу роль, к которой принадлежит пользователь чтобы соответствовать Роли, которую я имею на контроллере
  • Когда я go к этому контроллеру, я получаю 403 Запрещенную ошибку

Я не знаю, как отладить его дальше.

Запуск:

services.AddIdentity<User, UserRole>(opt => opt.User.RequireUniqueEmail = true)
    .AddRoles<UserRole>()
    .AddEntityFrameworkStores<EntityDbContext>()
    .AddDefaultTokenProviders();

var jwtSetting = _configuration
    .GetSection("JwtSettings")
    .Get<JwtSettings>();

services.AddAuthentication(options => {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(config =>
    {
        config.RequireHttpsMetadata = false;
        config.SaveToken = true;

        config.TokenValidationParameters = new TokenValidationParameters
        {
            ValidIssuer = jwtSetting.Issuer,
            ValidAudience = jwtSetting.Audience,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSetting.Key))
        };
    });

Мой контроллер с ролью:

[Authorize(Roles = "Internal")]
[ApiController]
[Route("Api/[controller]")]
public class UserController : BasicCrudController<User>
{
     // Stuff here ...
}

URL репо

1 Ответ

5 голосов
/ 05 февраля 2020

Вы должны добавить утверждение типа ClaimsIdentity.RoleClaimType в токен jwt для его роли

...