минимальные полномочия – это тот набор полномочий, который требуется коду для выполнения;
необязательные полномочия – этот тот набор полномочий, который может использоваться кодом, но код способен к выполнению и без них;
запрещенные полномочия – этот тип полномочий не должен быть предоставлен коду.
Запрос полномочий может быть полезен по многим причинам, так приложение будет знать в начале своей работы, есть ли у него полномочия на выполнение необходимых операций; указывая минимальный набор полномочий повышается вероятность выполнения сборки.
Вот пример установки минимальных полномочий для получения доступа к пользовательскому интерфейсу:
[assembly:UIPermissionAttribute(SecurityAction.RequestMinimum)]
Конечно же для использования подобных атрибутов необходимо четко знать, какие права должна иметь сборка для своего выполнения.
Использование атрибутов позволяет не только просто объявлять необходимые полномочия, но и гарантировать наличие обработки исключительных ситуаций для отвергнутых полномочий, что может помочь другому программисту.
Система безопасности на основе ролей
Понятие системы безопасности на основе ролей
Второй тип системы безопасности – это система безопасности на основе ролей. В отличии от предыдущей системы, она позволяет решить, может ли код выполнять действия, на основе информации о пользователе и его ролях. Этот тип системы безопасности уже защищает ресурсы ни от кода, а от пользователя. Это является очень важным в организациях с большим количеством сотрудников, имеющих различные права для доступа к базам данных, файлам.
Система безопасности на основе ролей позволяет наладить взаимодействие с учетными записями Windows. Это может оказаться очень удобным, так как достаточно управлять лишь одним набором учетных записей.
Принцип системы безопасности на основе ролей довольно простой. При входе в систему, пользователь производит аутентификацию. Под этим процессом понимают проверку наличия записи о пользователе в системе. При успешной аутентификации пользователь получает идентификатор, который ассоциируется с его именем в системе. Процесс аутентификации можно осуществлять различными способами, начиная от .NET Passport и заканчивая какими-то своими алгоритмами. Следующим процессом является авторизация. Этот процесс представляет из себя проверку прав на совершение некоторого действия, основываясь на ролях пользователя. Именно способ авторизации и предлагает .NET Framework через систему безопасности на уровне ролей.
Объекты для взаимодействия с ролями Windows
Чтобы поддерживать систему безопасности на основе ролей, .NET Framework должна иметь возможности хранить информацию о пользователе, а также о ролях доступных этому пользователю. Это делается с помощью двух объектов Identity и Principal. Рассмотрим, какие классы описывают эти объекты для системы безопасности на основе ролей Windows.
Для определения пользователя и ролей, на который назначен данный пользователь используются два класса: WindowsIdentity и WindowsPrincipal.
Класс WindowsIdentity описывает пользователя Windows. Получить объект этого класса можно двумя способами: вызвать статический метод GetCurrent, чтобы получить информацию о текущем пользователе или использовать один из конструкторов. Кроме метода GetCurrent, класс WindowsIdentity имеет следующие свойства:
|