При заимствование прав пользователей в среде Windows вы можете даже конфигурировать списки ACL в элементах реестра или любых других ресурсах на машине, и Windows выполнит авторизацию на основе зарегистрированного пользователя Windows.
Внимание! Применение заимствования прав коварно (если вообще не опасно). Оно требует правильной конфигурации элементов списка ACL по каждому объекту для каждой группы, а иногда даже еще и по каждому пользователю. Простая ошибка в конфигурации может привести к брешам в системе безопасности вашего приложения. По мере роста количества пользователей (и групп Windows) ситуация становится все более и более сложной, а потому ошибки в конфигурации вполне возможны. Вы должны применять заимствование прав, если только это действительно необходимо. Всегда предпочтительнее создавать специальные роли пользователей приложения и выполнять авторизацию на базе этих ролей.
Более того, вы можете реализовать авторизацию посредством написания специального кода на своих страницах или в компонентах, используемых Web-приложением. В этом случае вы ссылаетесь на объект HttpCbntext.Current.User и принимаете решение на основе принадлежности к ролям или непосредственно по имени пользователя. О дизайне и реализации авторизации будет рассказано подробно в главе 23. Но прежде чем изучать детали аутентификации и авторизации, вы должны понимать значение контекста безопасности.
Независимо от системы аутентификации, ASP.NET использует в основе одну и ту же модель представления информации о пользователе и ролях. Пользователям, которые регистрируются в Web-приложении, на основе предъявленных ими удостоверений выделяется принципал (principal) и личность. Объект-принципал представляет текущий контекст безопасности данного пользователя. Он комбинирует самого пользователя (личность) с информацией, сохраняемой в учетной записи текущего пользователя — такой как роли, привилегии и многое другое. Таким образом, это позволяет вам выполнять авторизацию, основанную на ролях, и предоставляет ссылку на соответствующий объект личности. Объект личности представляет успешно авторизованного пользователя и потому предоставляет информацию о пользователе наподобие его имени.
Все объекты-принципалы реализуют интерфейс IPrincipal, который определяет центральный набор функциональности. Когда вы обращаетесь к свойству User текущей Web-страницы (System.Web.UI.Page), или из текущего контекста HTTP (HttpContext.Current), то получаете доступ к объекту IPrincipal, представляющему контекст безопасности текущего пользователя.
Интерфейс IPrincipal определяет единственное свойство по имени Identity, которое извлекает объект IIdentity, представляющий информацию о текущем пользователе. Интерфейс IPrincipal также определяет единственный метод по имени IsInRole(), позволяющий проверить, является ли текущий пользователь членом специфической роли.
предыдущая следующая страница вначало главы оглавление
823