Если у меня есть два основных контроллера WebApi .net, AdminController и UserController (в одном проекте). И оба требуют авторизации, то как я могу установить их как 2 области в IdentityServer4, чтобы пользователь Admin имел доступ к обоим контроллерам, но простой пользователь не мог получить доступ к контроллеру Admin, а простому пользовательскому контроллеру? Мой клиент имеет тип Angular 2. И есть ли какой-нибудь пример, на котором также разрешена авторизация на основе ролей? Спасибо, MaverickРолевая авторизация на контроллерах WebApi в IdentityServer4?
ответ
Не окончательный ответ на ваш вопрос, вероятно (так как он не включает 2 области) - но это может привести вас куда-нибудь.
Im предполагая ваш используя TokenValidation middleware, и что ваш АФИ настройка с помощью IdentityServerAuthentication
Вы можете иметь роль претензии, что указывает на то, что роль у пользователя (например, пользователя, администратора). Затем вы можете установить проверку роли для admin api, используя атрибут [Authorize(Roles="admin")]
, а для пользователя api просто используйте [Authorize]
, который гарантирует, что пользователь вошел в систему, или укажите обе роли в виде списка, разделенного запятой ([Authorize(Roles="admin,user")]
) если нужно.
т.е:
[Authorize(Roles="Admin")]
public class AdminController : ApiController
{
Вот ссылка на документы на авторизовать атрибут для .net Ядра:
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles