Из того, что я прочитал из этот документ Я понимаю, что система на основе контроля доступа роль одна, где пользователи могут быть назначены роли где роли определяют разрешения для выполнения операций с объектами. Но в asp.net мы не указываем «Операции с объектами», я имею в виду, что как мы можем указать «Все пользователи в роли R могут выполнять удаление объекта O» Где находится Объектная часть в ASP.Net
Является ли безопасность на основе ролей ASP.NET настоящей системой контроля доступа на основе ролей?
Ответы (4)
Модель безопасности asp.net довольно ограничена. По сути, у вас есть контроль только на уровне ролей. Это означает, что для любой операции вы должны проверить, является ли пользователь какой-либо из ролей, которым вы хотите разрешить выполнение этой операции.
Мы пошли по пути определения нашей собственной модели, которая дает гораздо большую детализацию. В основном мы определяем операции и назначаем эти операции различным ролям. Таким образом, мы можем проверить, есть ли у них право «удалить учетную запись», по сравнению с тестированием, если они находятся в «Администраторе», «Администраторе учетной записи» или в любом количестве других ролей. Это очень похоже на то, как работает Active Directory. Кроме того, это позволяет нам перенастраивать роли по мере необходимости.
В составе Windows есть компонент под названием Authorization Manager (AzMan). Он может работать с вашим поставщиком членства, чтобы обеспечить контроль уровня работы. Некоторым это удалось, но другие жаловались, что с этим трудно приступить к работе. Мы использовали его около 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.");