Ограничение доступа к веб-узлам ASP.NET
Обновлен: Ноябрь 2007
Ограничение доступа к приложению в основном подразделяется на две задачи: проверку подлинности, которая состоит в том, что приложение идентифицирует пользователя, и авторизацию, которая состоит в том, что приложение определяет, какие разрешения имеет пользователь. В данном разделе даются общие сведения о проверке подлинности и авторизации в приложениях ASP.NET. Дополнительные сведения см. в разделе Безопасность веб-приложений ASP.NET.
Проверка подлинности пользователей
Приложения ASP.NET предоставляют несколько различных параметров для проверки подлинности пользователей. В приложениях только для чтения, которые может просматривать любой пользователь, используется анонимный доступ. Для более ограниченного доступа к приложению необходимо использовать некоторую форму проверки подлинности для идентификации пользователей. Можно выбрать одну из двух идентификаций для проверки подлинности пользователей в приложении ASP.NET: удостоверение приложения, используемое для доступа к ресурсам Windows, и удостоверение пользователя в ASP.NET.
Приложение может выполняться без удостоверения пользователя ASP.NET, но удостоверение приложения Windows присутствует всегда. Для защиты приложений следует ограничить удостоверение приложения Windows на доступ к требуемым ресурсам, таким как файлы и базы данных.
Удостоверение приложения ASP.NET
При выполнении страницы ASP.NET сервер должен иметь контекст безопасности, или идентификацию, для процесса, выполняющего код ASP.NET. Эта идентификация используется при защите ресурсов с помощью встроенной безопасности Windows, например файлов, защищенных с помощью файловой системы NTFS, или сетевых ресурсов.
Например, для прочтения файлов, содержащих код приложения, хранящийся в подкаталоге App_Code приложения, требуется только удостоверение приложения ASP.NET. Следовательно, параметры безопасности для файлов в каталоге App_Code можно ограничить, чтобы удостоверение приложения ASP.NET имело доступ только для чтения. Другим частым использованием удостоверения приложения ASP.NET является идентификация подключения к SQL Server с помощью встроенной безопасности Windows. Дополнительные сведения см. в разделах Обязательные списки управления доступом (ACL) ASP.NET и Практическое руководство. Получение доступа к серверу SQL Server с помощью встроенной безопасности Windows.
Удостоверение приложения ASP.NET определяется несколькими факторами. По умолчанию страницы ASP.NET выполняются с идентификацией Windows для службы, которая обрабатывает страницы ASP.NET на веб-сервере. На компьютере под управлением Windows Server 2003 эта идентификация является удостоверением пула приложений, частью которого является приложение ASP.NET (по умолчанию учетная запись Network Service). На компьютерах, работающих под управлением Windows 2000 и Windows XP Professional, эта идентификация является локальной учетной записью ASPNET, которая создается при установке платформы .NET Framework. При необходимости эту идентификацию можно настроить для различных удостоверений. Дополнительные сведения см. в разделе Настройка удостоверения процесса ASP.NET.
Можно изменить идентификацию Windows, которую выполняет страница ASP.NET, с помощью элемента identity раздела конфигурации system.web. С помощью элемента identity можно давать указание ASP.NET олицетворять идентификатор пользователя Windows. Олицетворение идентификации Windows означает, что страницы ASP.NET для приложения будут выполняться с этой идентификацией Windows. Можно указать имя пользователя и пароль для олицетворения. Кроме того, можно включить выполнение ASP.NET олицетворения одним из двух способов: как анонимную идентификацию, заданную IIS, или идентификацию обозревателя с проверкой подлинности, определенной в IIS (например с анонимным доступом, встроенной проверкой подлинности Windows (NTLM) и т. д.). Дополнительные сведения см. в разделе Олицетворение ASP.NET.
Если указано олицетворение идентификации Windows, то можно выполнять код, возвращенный к первоначальной идентификации процесса, вместо олицетворенного идентификатора пользователя. По этой причине в тех средах, в которых необходимо сохранять приложения разделенными, следует размещать эти приложения в разных пулах приложений на компьютерах под управлением Windows Server 2003. Каждый пул приложений должен иметь уникальное удостоверение Windows.
Можно легко определить идентификацию Windows для потока операционной системы, который выполняет страница ASP.NET, с помощью свойства Name элемента WindowsIdentity, возвращаемого методом GetCurrent, как показано в следующем примере:
<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>
Пользователь ASP.NET
Удостоверение пользователя ASP.NET используется для доступа к ресурсам ASP.NET. Например, можно определить часть приложения как доступную только определенным пользователям, в то время как остальные части приложения останутся доступны всем пользователям.
Пользователь ASP.NET определяется элементом authentication раздела system.web в файле web.config приложения. Имеется несколько вариантов проверки подлинности удостоверения для приложения ASP.NET. Можно использовать имя пользователя Windows, определяемое IIS, проверку подлинности форм ASP.NET, проверку подлинности Passport или пользовательскую схему проверки подлинности. Доступ к удостоверению ASP.NET можно получить с помощью свойства User текущего контекста HttpContext. Дополнительные сведения см. в разделе Проверка подлинности ASP.NET.
Если используется проверка подлинности форм ASP.NET или пользовательское решение проверки подлинности для обеспечения удостоверения ASP.NET, можно использовать членство ASP.NET для обеспечения хранилища пользовательских данных и функциональных возможностей управления пользователями. Дополнительные сведения см. в разделе Управление пользователями путем объединения их в группы.
Авторизация пользователей
Авторизация включает ограничение доступа пользователей только теми ресурсами, которые им необходимы. Сюда входит доступ только к необходимым файлам, базам данных и частям приложения. Кроме того, это включает использование управления доступом для кода для ограничения доступа к коду.
Можно ограничить доступ к файлу с помощью списков управления доступом NTFS и модуля FileAuthorizationModule. Дополнительные сведения см. в разделах Авторизация в ASP.NET и Обязательные списки управления доступом (ACL) ASP.NET.
Можно ограничить доступ к частям приложения с помощью модуля UrlAuthorizationModule и средства управления ролями ASP.NET. Дополнительные сведения см. в разделах Авторизация в ASP.NET и Управление авторизацией с помощью ролей.