Авторизация в ASP.NET

Обновлен: Ноябрь 2007

В процессе авторизации определяется, можно ли конкретному пользователю предоставить доступ к указанному ресурсу. В ASP.NET существует два основных способа авторизации доступа к заданному ресурсу:

  • Авторизация файла   Авторизация файла выполняется модулем FileAuthorizationModule. Этот модуль проверяет список управления доступом (ACL) файла обработчика с расширением ASPX или ASMX и определяет, следует ли пользователю предоставить доступ к файлу. Разрешения списка управления доступом проверяются для учетной записи пользователя в Windows (если включена проверка подлинности Windows) либо для удостоверения Windows процесса ASP.NET. Дополнительные сведения см. в разделе Олицетворение ASP.NET.

  • Авторизация URL-адреса   Авторизация URL-адреса выполняется модулем UrlAuthorizationModule, который сопоставляет пользователей и роли URL-адресам в приложениях ASP.NET. С помощью этого модуля можно избирательно предоставлять или запрещать определенным пользователям и ролям доступ к произвольным компонентам приложения (как правило, каталогам).

Использование авторизации URL-адреса

При использовании авторизации URL-адреса предоставление и запрет доступа к конкретному каталогу осуществляется явным образом по имени пользователя или роли. Чтобы воспользоваться этой возможностью, создайте в файле конфигурации для необходимого каталога раздел authorization. Чтобы включить авторизацию URL-адреса, укажите в элементах allow или deny раздела authorization файла конфигурации список пользователей или ролей. Разрешения, установленные для каталога, также применяются к его подкаталогам, если в файлах конфигурации подкаталогов не указаны иные разрешения.

Ниже приведен синтаксис, используемый в разделе authorization.

<authorization>
  <[allow|deny] usersrolesverbs />
</authorization>

Элемент allow или deny является обязательным. Необходимо указать хотя бы один из атрибутов users или the roles. Также можно (но не обязательно) указать оба атрибута. Атрибут verbs является необязательным.

Элементы allow и denyиспользуются соответственно для предоставления и запрета доступа. Каждый элемент поддерживает атрибуты, указанные в приведенной ниже таблице.

Атрибут

Описание

users

Определяет конечные удостоверения (учетные записи пользователей) для этого элемента.

Чтобы указать анонимных пользователей, введите вопросительный знак (?). Чтобы указать всех прошедших проверку пользователей, введите звездочку (*).

roles

Определяет для текущего запроса роль (объект RolePrincipal), которой разрешен или запрещен доступ к ресурсу. Дополнительные сведения см. в разделе Управление авторизацией с помощью ролей.

verbs

Определяет команды HTTP, к которым применяется действие, например GET, HEAD и POST. Значение по умолчанию — «*» (все команды).

В приведенном ниже примере учетной записи Kim и членам роли Admins предоставляется доступ к ресурсу, а учетной записи John (если учетная запись John не включена в роль Admins) и всем анонимным пользователям доступ к этому же ресурсу запрещается.

<authorization>
  <allow users="Kim"/>
  <allow roles="Admins"/>
  <deny users="John"/>
  <deny users="?"/>
</authorization>

В приведенном ниже разделе authorization показано, как предоставить доступ учетной записи John и запретить доступ всем остальным пользователям.

<authorization>
  <allow users="John"/>
  <deny users="*"/>
</authorization>

Как показано в приведенном ниже примере, для атрибутов users и roles можно указать через запятую несколько объектов.

<allow users="John, Kim, contoso\Jane"/>

Обратите внимание, что при указании имени учетной записи домена это имя должно включать и имя домена, и имя пользователя (например contoso\Jane).

В приведенном ниже примере команду HTTP GET для ресурса разрешается выполнять всем пользователям, а операцию POST — только учетной записи Kim.

<authorization>
  <allow verbs="GET" users="*"/>
  <allow verbs="POST" users="Kim"/>
  <deny verbs="POST" users="*"/> 
</authorization>

Правила применяются указанным ниже образом.

  • Правила, хранящиеся в файлах конфигурации на уровне приложения, имеют приоритет над наследуемыми правилами. Система определяет приоритет правил путем составления объединенных списков всех правил для конкретного URL-адреса, причем новейшие (ближайшие в иерархии) правила располагаются в начале списка.

  • При заданном наборе объединенных правил для приложения ASP.NET система начинает с первой позиции списка и сверяет правила до тех пор, пока не будет найдено первое соответствие. В конфигурации ASP.NET по умолчанию содержится элемент <allow users="*">, авторизующий всех пользователей. (По умолчанию это правило применяется последним). Если других правил авторизации не найдено, запрос разрешается. Если соответствие найдено, и соответствующее правило находится в элементе deny, запрос возвращается с кодом состояния HTTP 401. Если соответствующее правило находится в элементе allow, модуль разрешает дальнейшую обработку запроса.

В файле конфигурации также можно создать элемент location и указать в нем конкретный файл или каталог, к которому необходимо применить параметры, заданные в элементе location.

См. также

Основные понятия

Настройка отдельных файлов и подкаталогов

Олицетворение ASP.NET

Ссылки

FileAuthorizationModule

UrlAuthorizationModule

IPrincipal

Другие ресурсы

Безопасность веб-приложений ASP.NET