Я пытаюсь узнать больше о Identity Server. В настоящее время я изо всех сил пытаюсь заставить работать авторизацию на основе ролей. Вот шаги, которые я выполнил:
1) Загрузить образец решения: https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/6_AspNetIdentity
2) Запустите решение, которое запускается:
a) Проект Identity Server
б) проект MVC
c) Проект API
3) Перейдите к проекту MVC и примените миграции.
4) Зарегистрировать нового пользователя: Bert@Bert.com
5) Просмотрите: CallApiUsingUserAccessToken в проекте MVC. API достигнут ожидаемым образом, поскольку пользователь авторизован.
Скажем, теперь я хочу изменить IdentityContoller из этого:
[Authorize]
public class IdentityController : ControllerBase
к этому:
[Authorize(Roles="Admin")]
public class IdentityController : ControllerBase
и домашний контроллер (https://github.com/IdentityServer/IdentityServer4.Samples/blob/release/Quickstarts/6_AspNetIdentity/src/MvcClient/Controllers/HomeController.cs) от этого:
public async Task<IActionResult> CallApiUsingUserAccessToken()
к этому:
[Authorize(Roles="Admin")]
public async Task<IActionResult> CallApiUsingUserAccessToken()
Какие изменения я должен внести в конфигурацию?
Сегодня я попробовал несколько предложений. Например, при запуске MVCClient я попытался добавить:
options.ClaimActions.MapJsonKey("role", "role", "role");
options.TokenValidationParameters.NameClaimType = "name";
options.TokenValidationParameters.RoleClaimType = "role";
Пожалуйста, предположите, что я правильно добавил роли в базу данных удостоверений (и связал роли с пользователями).