Поделиться через


Архитектура безопасности ASP.NET

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

В этом разделе приведены общие сведения об инфраструктуре системы безопасности ASP.NET. На приведенном ниже рисунке изображены отношения между системами безопасности в ASP.NET.

Архитектура ASP.NET
yedba920.urtarch(ru-ru,VS.90).gif

Как показано на рисунке, все веб-клиенты взаимодействуют с приложениями ASP.NET с помощью служб IIS. При необходимости IIS проверяет подлинность запроса и затем определяет местонахождение запрошенного ресурса (например, приложение ASP.NET). Если клиент авторизован, ему предоставляется доступ к этому ресурсу.

Во время выполнения приложение ASP.NET может использовать встроенные средства безопасности ASP.NET. Кроме того, в приложении ASP.NET могут использоваться средства безопасности платформы .NET Framework. Дополнительные сведения см. в разделе Основные понятия безопасности.

Интеграция проверки подлинности ASP.NET с IIS

Для проверки подлинности наряду с функциями IIS можно использовать возможности ASP.NET. При рассмотрении вопроса проверки подлинности ASP.NET необходимо изучить работу со службами проверки подлинности IIS.

Службы IIS предполагают, что набор учетных данных отображает учетную запись Microsoft Windows NT, и эти учетные данные должны использоваться для проверки подлинности пользователя. В версиях IIS 5.0 и IIS 6.0 доступны три вида проверки подлинности: стандартная, шифрованная и встроенная проверка подлинности Windows (NTLM или Kerberos). Можно выбрать один из типов проверки подлинности для использования в административных службах IIS. Дополнительные сведения о проверке подлинности IIS, см. в документации по службам IIS.

Если запрашивается URL-адрес, выполняющий сопоставление с приложением ASP.NET, информация о запросе и проверке подлинности передаются приложению. ASP.NET обеспечивает проверку подлинности форм. Проверка подлинности форм — система, с помощью которой запросы, не прошедшие проверку подлинности, перенаправляются на созданную веб-страницу ASP.NET. Пользователь предоставляет учетные данные и отправляет страницу. Если приложение подтверждает подлинность запроса, система выдает билет проверки подлинности с учетными данными или ключом для повторного запроса удостоверения в файле Cookie. В последующих запросах содержится также билет проверки подлинности.

yedba920.alert_note(ru-ru,VS.90).gifПримечание.

Элементы управления членства и входа ASP.NET неявно используют проверку подлинности с помощью форм.

Параметры безопасности файла конфигурации ASP.NET

Настройка параметров безопасности ASP.NET выполняется в файлах Machine.config и Web.config. Базовые параметры и параметры по умолчанию, как и другие сведения о конфигурации, задаются в файле Machine.config вложенной папки Config текущей установки .NET Framework. Параметры узла и приложения (включая переопределение настроек файла Machine.config) можно установить в файлах Web.config корневых каталогов веб-узла и приложения. Вложенные папки наследуют параметры каталога, если они не переопределены файлом Web.config во вложенной папке. Пример обеспечения безопасности иерархической системой конфигурации см. в разделе Элемент configSections (схема общих параметров).

Существуют три основных раздела файла Web.config: проверка подлинности, , авторизация и идентификация. Значения каждого из элементов безопасности обычно задаются в файле Machine.config и по необходимости переопределяются в файле на уровне приложения Web.config. Все вложенные папки наследуют эти параметры автоматически. Однако у них могут быть собственные файлы конфигурации, переопределяющие унаследованные параметры.

yedba920.alert_note(ru-ru,VS.90).gifПримечание.

Система конфигурации ASP.NET применяется только к ресурсам ASP.NET (которые зарегистрированы как ресурсы, обрабатываемые IIS с использованием расширения Aspnet_isapi.dll). Эта система не может обеспечить проверку подлинности для ресурсов, не обрабатываемых ASP.NET. Таким образом файлы с расширениями TXT, HTM, HTML, GIF, JPG, JPEG, ASP и других типов остаются доступными для всех пользователей (в зависимости от разрешений IIS). К примеру, несмотря на то, что ресурсы ASP.NET в каталоге могут быть защищены файлом Web.config, пользователи смогут просматривать файлы, расположенные в этом каталоге, если включен режим просмотра каталога и не наложено никаких других ограничений. Чтобы поместить эти файлы под защиту системы безопасности ASP.NET, необходимо явно отобразить расширения имен этих файлов на расширение Aspnet_isapi.dll с помощью инструмента администрирования IIS. Однако обработки этих типов файлов через ASP.NET может снизить производительность работы веб-узла.

Для указания конкретного файла или каталога, к которому должны применяться параметры, можно использовать элемент конфигурации location. Дополнительные сведения см. в разделах Элемент configSections (схема общих параметров) и Настройка отдельных файлов и подкаталогов. Общие сведения о настройке ASP.NET см. в разделе Общие сведения о конфигурационном ASP.NET.

В примерах далее представлен синтаксис разделов системы безопасности файла конфигурации:

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Параметры по умолчанию для этих элементов указаны в следующей таблице.

Значение по умолчанию

Описание

<allow roles="" />

Пустая строка, указывающая, что все роли разрешаются по умолчанию.

<allow users="*" />

Пустая строка, указывающая, что доступ разрешен для всех пользователей (проверка подлинности не требуется).

<authentication mode="Windows" />

Тип проверки подлинности, определяющий источник текущего значения User. По умолчанию используется Windows.

<credentials passwordFormat="SHA1" />

Алгоритм хэширования, использующийся для паролей. По умолчанию используется значение SHA1.

<deny roles="" />

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

<deny users="" />

Пустая строка, указывающая, что запрещенные пользователи по умолчанию отсутствуют.

<forms loginUrl="logon.aspx" />

URL-адрес, на который отправляется запрос, если проверке подлинности mode присвоено значение Forms, а у запроса отсутствует допустимый билет проверки подлинности.

<forms name=".ASPXAUTH" />

Имя, под которым файл Cookie проверки подлинности в формах сохраняется на компьютере пользователя.

<forms path="/" />

Путь, к которому применяется проверка подлинности в формах. По умолчанию используются все пути от корневой папки приложения.

<forms protection="All" />

Параметры безопасности, используемые в билете проверки подлинности в формах. К числу допустимых значений относятся All, None, Encryption и Validation.

<forms timeout="30" />

Время ожидания в минутах до истечения срока действия билета проверки подлинности в формах и возникновения необходимости в повторной проверке подлинности пользователей.

<forms requireSSL="false" />

Логическое значение, указывающее, требуется ли SSL-соединение для передачи файла Cookie проверки подлинности.

<forms slidingExpiration="true" />

Логическое значение, определяющее, включен ли скользящий срок действия. Дополнительные сведения см. в описании свойства SlidingExpiration.

<identity impersonate="false" />

Логическое значение, определяющее, отключено ли олицетворение. Дополнительные сведения см. в разделе Олицетворение ASP.NET.

<identity userName="" />

Пустая строка, указывающая, что удостоверение пользователя по умолчанию не обозначено.

<identity password="" />

Пустая строка, указывающая, что пароль к удостоверению пользователя по умолчанию не определен.

<trust level="Full" originUrl="" />

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

<trustLevel name="Full" policyFile="internal"/>

Файл политики по умолчанию для уровня доверия "Full".

<trustLevel name="High" policyFile="web_hightrust.config"/>

Файл политики по умолчанию для уровня доверия "High".

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

Файл политики по умолчанию для уровня доверия "Medium".

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

Файл политики по умолчанию для уровня доверия "Low".

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

Файл политики по умолчанию для уровня доверия "Minimal".

См. также

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

Общие сведения о конфигурационном ASP.NET

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

Защита веб-узлов ASP.NET

Основные понятия безопасности

Поставщик службы проверки подлинности форм