Является ли безопасность на основе ролей ASP.NET настоящей системой контроля доступа на основе ролей? - PullRequest
1 голос
/ 26 апреля 2011

Из того, что я прочитал из этой статьи Я понимаю, что система управления доступом на основе ролей - это система, в которой пользователи могут быть назначены на роли, где роли определяют разрешения на выполнение операций над объектами. Но в asp.net мыне указывайте «Операции над объектами», здесь я имею в виду, что как мы можем указать «Все пользователи в роли R могут выполнять удаление объекта O». Где находится объектная часть в ASP.Net

Ответы [ 4 ]

4 голосов
/ 26 апреля 2011

Модель безопасности asp.net довольно ограничена.По сути, вы имеете контроль только на уровне ролей.Это означает, что для любой операции вы должны проверить, является ли пользователь какой-либо из ролей, для которых вы хотите разрешить эту операцию.

Мы пошли по пути определения нашей собственной модели, которая дает гораздо большезернистость.В основном мы определяем операции и назначаем эти операции различным ролям.Таким образом, мы можем проверить, имеют ли они право «удалять учетную запись», по сравнению с проверкой, находятся ли они в «Администраторе», «Администраторе учетной записи» или в любом количестве других ролей.Это очень похоже на работу Active Directory.Кроме того, это позволяет нам переконфигурировать роли по мере необходимости.

Существует фрагмент под названием Диспетчер авторизации (AzMan) , который поставляется с окнами.Он может работать с вашим провайдером членства, чтобы обеспечить контроль уровня операций.Некоторые люди имели успех с этим, но другие жаловались, что трудно работать.Мы использовали его около 5 лет назад в проекте, и в то время он работал около 95% времени.Остальные 5% имели проблемы со связью с нашим контроллером AD.

Что приводит нас к вашему вопросу: является ли встроенный поставщик членства ASP.Net настоящей системой контроля доступа на основе ролей?Это позволяет вам определять роли, а не операции.

0 голосов
/ 20 февраля 2014

Как предлагалось в предыдущих публикациях, для достижения большей степени детализации вам необходимо использовать существующих поставщиков членства и роли ASP.net.Существуют сторонние элементы управления, такие как http://www.visualaccesscontrol.com, которые также обеспечивают основанную на ролях защиту доступа к модулям и защиту доступа к данным.С помощью Visual Access Controls вы можете добавлять административные функции в ваше веб-приложение ASP.net, чтобы динамически ограничивать пользователей действиями, которые им разрешено выполнять, и подмножеством данных, которые им разрешено просматривать, исходя из их соответствующих ролей.

0 голосов
/ 26 апреля 2011

Проверьте безопасность носорога, если вам нужно что-то более мелкозернистое.

0 голосов
/ 26 апреля 2011

Вы выполняете операцию удаления, поэтому вы должны проверить, есть ли у вошедшего в систему пользователя разрешение на удаление объекта. Например, вы можете создать роль «CanDeleteOs». Тогда ваш код будет выглядеть так:

if ( !Roles.IsUserInRole("CanDeleteOs") )
    throw new Exception("User does not have permission to delete O's.");
...