У меня есть SPA, у которого есть веб-API ASP.NET Core вместе со встроенным сервером идентификации, включенным с помощью AddIdentityServer
, а затем AddIdentityServerJwt
:
services.AddIdentityServer()
.AddApiAuthorization<User, UserDataContext>();
services.AddAuthentication()
.AddIdentityServerJwt();
У меня также есть настройка политики авторизациидля этого требуется утверждение роли «Администратор»:
services.AddAuthorization(options =>
{
options.AddPolicy("IsAdmin", policy => policy.RequireClaim(ClaimTypes.Role, "Admin"));
});
У меня есть действие контроллера, использующее эту политику
[Authorize(Policy = "IsAdmin")]
[HttpDelete("{id}")]
public IActionResult Deleten(int id)
{
...
}
Аутентифицированный пользователь имеет утверждение роли «Администратор»:
Маркер доступа для этого пользователя аутентификации не содержит утверждения администратора:
Я получаю 403 обратно при попытке запросить этот ресурс у администратора:
Итак, если яПри правильном понимании IdentityServer не включает утверждение о роли администратора, и поэтому пользователь не авторизован для доступа к ресурсу.
Можно ли настроить утверждения, которые IdentityServer использует, используя AddIdentityServerJwt
?или я неправильно понимаю, почему это не работает.