Мне не повезло получить какие-либо атрибуты роли или политики, работающие в .Net Core 3. Я начал свой проект с начального проекта .Net Core Angular с аутентификацией. Я подумал, что это как-то связано с новыми методами .AddDefault, поэтому я максимально упростил их, но они все равно не работают.
Вот моя политика:
services.AddAuthorization(options =>
{
options.AddPolicy("IsAdmin", policy =>
policy.RequireClaim("role", "admin"));
});
Вот мой контроллер:
[Authorize(Policy = "IsAdmin")]
[Route("api/[controller]")]
public class AdminController : Controller
{
...
Я создал собственную службу профилей, которая добавляет требование к токену,
var claims = new List<Claim>();
if (await _userManager.IsInRoleAsync(user, "Admin"))
{
claims.Add(new Claim(JwtClaimTypes.Role, "admin"));
}
context.IssuedClaims.AddRange(claims);
Внутри моего токена доступа (из jwt.io):
Другие части настройки сервисов:
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
...
services.AddAuthentication()
.AddIdentityServerJwt();
Простой тег [Authorize]
отлично работает с токеном доступа на других контроллерах.
Когда я нажимаю на этот контроллер токеном доступа, я получаю ответ 403
Что мне не хватает, что мешает этому работать?