Реклама:

Реализация интерфейсов /Principal и /Identity

interface IPrincipal {

Ildentity Identity { get; }

bool IsInRoleCstring roleName):

)

interface Ildentity {

bool IsAutbenticated { get } string AuthenticationType { get } string Name { get >

}

Интерфейс Identity предназначен только для работы с идентификационной информацией и аутентификации клиента. Интерфейс IPtincipa! связывается с объектом Ildentity и предоставляет метод IsInRole, который является ключом инфраструктуры защиты .NET на основе ролей.

В .NET Framework включено несколько реализаций этих интерфейсов.

■ WindowsPrincipal/WindowsIdentity Эти классы представляют пользователя Windows и заключают в оболочку маркера зашиты Windows. При использовании аутентификации Windows ASP.NET задает этому типу объект Context.User. Класс Windowsldentity также поддерживает функциональность Windows, например олицетворение и перенос протоколов.

» Formsldentity Этот класс заключает в оболочку билет аутентификации Forms и используется при включении аутентификации ASP.NET Forms. По умолчанию пользователи Forms не имеют ролей, поэтому с ними не связан никакой объект принципала. Если вы хотите объединить информацию о ролях с этим типом идентификации, используйте реализацию GenericPrincipal или собственную реализацию IPrincipal.

■ GenericPrincipal/GenericIdentity Эти классы ничего не заключают в оболочку и используются преимущественно для идентификаторов и ролей, определенных приложением. Эти реализации предназначены также для использования в качестве подклассов при расширении их функциональности.

Модуль аутентификации задает для одной из этих реализаций (в зависимости от используемой конфигурации) объект Context.User, и при программировании членов, отображенных интерфейсами, тип аутентификации не имеет значения.

Авторизация на основе ролей

Эта распространенная технология используется для добавления пользователей в роли или группы с целью выполнения авторизации на основе членства в роли, а не полномочий отдельного пользователя. При использовании учетных записей Windows остаются те же роли, что и в группах Windows, членом которых является пользователь (локальный или в Active Directory). В случае применения собственных учетных записей роли для пользователя загружаются из определенного серверного хранилища, например из базы данных.

Проверить доступ на основе ролей в ASP.NET можно разными способами — программным методом или путем конфигурирования, но суть всех этих методов состоит в том, что на некотором этапе они вызывают реализацию метода IPrincipal.IsInRole для объекта принципала текущего пользователя.

Программные проверки Типичный «ASP.NET-способ» программного выполнения проверок состоит в перехвате реализации IPrincipal из Context.User или Page.User и вызове метода IsInRole напрямую. В результате выводится булево значение, которое указывает, является ли пользователь членом этой роли. Такой метод обычно используется для сокрытия или отображения таких элементов UI, как ссылки, либо для динамического изменения функциональности страницы. (Информацию о том, почему данный метод небезопасен, можно найти в разделе «Подтверждение входных данных» главы 3.)


⇐ Предыдущая страница| |Следующая страница ⇒