2016-12-16 2 views
1

Если у меня есть два основных контроллера WebApi .net, AdminController и UserController (в одном проекте). И оба требуют авторизации, то как я могу установить их как 2 области в IdentityServer4, чтобы пользователь Admin имел доступ к обоим контроллерам, но простой пользователь не мог получить доступ к контроллеру Admin, а простому пользовательскому контроллеру? Мой клиент имеет тип Angular 2. И есть ли какой-нибудь пример, на котором также разрешена авторизация на основе ролей? Спасибо, MaverickРолевая авторизация на контроллерах WebApi в IdentityServer4?

ответ

1

Не окончательный ответ на ваш вопрос, вероятно (так как он не включает 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