Является ли безопасность на основе ролей ASP.NET настоящей системой контроля доступа на основе ролей?

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

4 ответа

Решение

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

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

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

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

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

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

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

if ( !Roles.IsUserInRole("CanDeleteOs") )
    throw new Exception("User does not have permission to delete O's.");
Другие вопросы по тегам