В начале года получил код dreamspark H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При его вводе- сообщение что он просрочен.
|
Настроечные параметры System.Web
Работа с разделом <authorization>
После того как метод аутентификации проверит личность пользователя, авторизация определяет, имеет ли этот пользователь право доступа к ресурсу. Авторизацию можно настроить для сервера, сайта, приложения, поддиректории или одной страницы. Авторизация ASP.NET основана на предоставлении доступа или отказе в доступе на основе имени пользователя или роли пользователя. Когда пользователь запрашивает ресурс, процесс ASP.NET перед обработкой этого запроса проверяет, имеет ли данный пользователь право на его выполнение. Если пользователь авторизован, запрос обрабатывается, в противном случае возвращается ошибка 401.
Имеется два элемента, используемых в разделе <authorization>: <allow> и <deny>. Они предоставляют или запрещают доступ к ресурсу на основе имени пользователя, роли или того, как производится доступ к ресурсу. Процесс ASP.NET предполагает, что пользователь может получить доступ к ресурсу, и если нет правила, запрещающего доступ для этого пользователя, то доступ будет разрешен.
Ниже приведен синтаксис для использования элементов <allow> и <deny>.
<authorization> <allow users="list of users" roles="list of roles" verbs="list of verbs" /> <deny users="list of users" roles="list of roles" verbs="list of verbs" /> </authorization>
Оба элемента имеют одинаковые свойства (см. табл. 4.4).
Вот пример того, как можно запретить доступ для анонимных пользователей, а затем предоставить доступ для некоторого количества других пользователей.
<authorization> <allow users="James, Tammy" /> <deny users="*" /> </authorization>
В этом примере при регистрации на сайте пользователей James и Tammy им будет предоставлен доступ к ресурсу. Для всех остальных пользователей доступ будет запрещен. Процесс ищет только первое правило, применимое к данному пользователю, и это правило определяет, имеет ли пользователь право доступа к ресурсу. В нашем примере при попытке доступа к приложению пользователя Tammy процесс найдет первое правило и предоставит ей доступ. Если бы правила были указаны в другом порядке, доступ ей был бы запрещен, так как первое применимое к ней правило являлось бы запрещающим. После того как процесс находит первое правило для пользователя, он прекращает читать настроечный файл.
![](00_05.jpg)
Свойство roles предоставляет или запрещает доступ на основе роли пользователя. Ниже приведен пример использования ролей для предоставления доступа.
<authorization> <allow roles="Power Users" /> <deny users="*" /> </authorization>
В этом примере запрещается доступ для всех пользователей, а затем разрешается доступ для пользователей, являющихся членами группы Power Users (Опытные пользователи) системы Windows. Вы можете использовать группы Windows, так как в этом примере применяется аутентификация Windows. В противном случае вам пришлось бы создать свою собственную реализацию ролей.
Другой опцией для предоставления и запрета доступа для пользователей является свойство verb. Оно предоставляет или запрещает доступ на основе того, как пользователь пытается получить доступ к приложению – с помощью методов HTTP GET, POST, HEAD или DEBUG. Ниже приведен пример предоставления доступа POST для администратора и запрета его для всех остальных пользователей.
<authorization> <allow roles="Admins" verbs="POST" /> <deny users="*" verbs="POST" /> </authorization>
В примере пользователи группы Admins (Администраторы) системы Windows имеют право на использование POST для приложения; для всех остальных пользователей при попытке применения POST для приложения доступ будет запрещен.
Я вкратце обсуждал тег location в "Изучение архитектуры настроек ASP.NET" , и теперь давайте посмотрим, как использовать этот тег совместно с авторизацией для управления тем, кто может получить доступ к отдельному файлу. В следующем примере тег location применяется для указания авторизационных прав доступа для одного файла – admin.aspx.
<location path="admin.aspx"> <System.Web> <authorization> <allow users="Administrator" /> <deny users="*" /> </authorization> </System.Web> </location>
В этом примере единственным пользователем, который получит доступ к файлу admin.aspx, является пользователь, определенный как Administrator. Использование тега location является единственным способом, с помощью которого права доступа можно применить к отдельному файлу.
![](00_05.jpg)
Можно применить права доступа к поддиректории приложения – для чего существуют два метода.
- Используйте тег location так, как показано в примере, и укажите список имен директорий в свойстве path.
- Добавьте в поддиректорию файл web.config и включите в него права доступа.
Файловая авторизация
До сих пор обсуждалась авторизация на основе запросов, но есть другой тип авторизации, который можно использовать в ASP.NET. При аутентификации Windows, если пользователь пытается получить доступ к файлу .aspx или .asmx, процесс ASP.NET выполняет проверку списка управления доступом (access control list – ACL) на предмет того, имеет ли этот пользователь право на доступ к этому файлу. То есть ASP.NET, кроме проверки того, имеет ли пользователь право на запрос к данному URL, определяет, имеет ли пользователь права NTFS для доступа к данному файлу. Это дает дополнительную возможность ограничить доступ пользователей к отдельным файлам, но такая возможность существует только при использовании аутентификации Windows.
Ключевые моменты <authorization>
Авторизация критически важна для обеспечения безопасности ваших приложений. Авторизация ASP.NET основана на URL, к которому пользователь осуществляет доступ, и комбинации правил <allow> и <deny> из раздела настроек. Ниже приведены ключевые моменты, которые нужно помнить при работе с разделом <authorization>.
- Авторизация ASP.NET выполняется тогда, когда пользователь запрашивает ресурс. Запрос принимается или отвергается на основе правил, содержащихся в разделе авторизации настроечного файла.
- Вы можете разрешить или запретить доступ пользователям на основе имени пользователя, роли пользователя или метода HTTP, использованного для доступа к ресурсу.
- ASP.NET будет использовать первое правило, которое применимо к пользователю, пытающемуся получить доступ к ресурсу.
- ASP.NET предполагает, что у пользователя есть право доступа к ресурсу. Пользователь отвергается только тогда, когда имеется правило запрета, применимое к этому пользователю.
- Для указания того, что параметры авторизации относятся к директории или даже одному файлу, используйте тег location.