Я пытаюсь использовать библиотеку 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 репо