Обзор по безопасности в Microsoft ASP.NET

Переводы статьи Переводы статьи
Код статьи: 306590 - Vizualiza?i produsele pentru care se aplic? acest articol.
Данная статья была ранее опубликована под номером RU306590
Данная статья содержит информацию о бета-версии программного продукта Microsoft. Информация в данной статье не является официальной и может быть изменена без предварительного уведомления.

Бета-версия продукта не обслуживается через каналы технической поддержки Microsoft. За информацией о получении технической поддержки бета-версии программного обеспечения обратитесь к документации, содержащейся в поставке, или на веб-сайте, с которого был загружен продукт. ?????
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье приводится информация о безопасности в ASP.NET.

За дополнительной информацией по ASP.NET обращайтесь к следующей статье в Microsoft Knowledge Base:
305140BETA-INFO: ASP.NET Roadmap

Дополнительная информация

ASP.NET предоставляет много возможностей обеспечения безопасности в ваших приложениях. Система безопасности ASP.NET работает в связке с системой безопасности Microsoft Internet Information Server (IIS) и включает службы опознования и разрешения доступа для реализации модели безопасности ASP.NET. В ASP.NET также включены возможности системы безопасности, основанной на ролях для связи с пользовательскими учетными записями Microsoft Windows и с другими учетными записями.

Данная статья поделена на следующие разделы:

Каналы безопасности с запросами

Следующие действия показывают последовательность событий при запросе клиента:
  1. Клиент запрашивает страницу .aspx, расположенную на сервере IIS.
  2. Удостоверение пользователя проходит через IIS.
  3. IIS опознает клиента и перенаправляет признак опознавания вместе с запросом пользователя работающему процессу ASP.NET.
  4. Основываясь на признаке опознавания от IIS и конфигурационных настройках веб-приложения, ASP.NET решает обрабатывать или нет данный запрос пользователя. Особая разница между Microsoft Active Server Pages (ASP) и ASP.NET заключается в том, что ASP.NET по умолчанию не имитирует опознанного пользователя. Чтобы включить имитацию вы должны установить атрибут ''impersonate'' в разделе идентификации файла ''Web.config '' в значение ''true''.
За дополнительной информацией по каналам безопасности обратитесь к следующей статье в документации по .NET Framework Software Development Kit (SDK): За дополнительной информацией по имитации в ASP.NET обратитесь к следующей статье в Microsoft Knowledge Base:
  • 306158BETA-INFO: Implementing Impersonation in an ASP.NET Application

Связанные конфигурационные настройки

IIS содержит настройки конфигурации, связанные с безопасностью в мета-базе IIS. Однако, другие настройки и настройки безопасности ASP.NET содержит в файлах типа Extensible Markup Language (XML). Хотя это обычно упрощает развертывание вашего приложения с точки зрения безопасности, но модель безопасности, применяемая приложением, требует правильной настройки в мета-базах как IIS, так и приложения ASP.NET через файл конфигурации (Web.config).

Следующие разделы настройки связаны с безопасностью ASP.NET:

Опознавание

Опознавание это процесс, при помощи которого идентифицируются такие параметры, как имя пользователя и пароль, и подтверждаются полномочия.

ASP.NET предоставляет четыре типа опознавания:

Опознавание форм

Опознавание форм ссылается на систему, в которой неопознанный запрос переназначен на форму типа ''Hypertext Markup Language (HTML)'', в которую пользователь вводит свои данные для опознавания. После ввода пользовательских данных и подтверждения их ввода в форму, приложение опознает запрос и системный сертификат идентификации в форме файлов ''cookie''. Файлы ''cookie'' содержат информацию о пользователе или ключ для повторного опознавания. Последующие запросы из обозревателя будут автоматически включать файлы ''cookie''.

За дополнительной информацией по опознаванию форм обращайтесь к следующей статье в документации по .NET Framework SDK: За дополнительной информацией по опознаванию форм в ASP.NET обращайтесь к следующей статье в Microsoft Knowledge Base:
  • 301240HOW TO: Implement Forms-Based Authentication in Your ASP.NET Application Using C# .NET

Опознавание Windows

При опознавании Windows опознавание выполняет IIS и опознавательный признак перенаправляется работающему процессу ASP.NET. Преимущество использования опознавания Windows в том, что для этого требуется минимальный объем кода. Вы можете использовать опознавание Windows для имитации пользовательских учетных записей Windows, которые были опознаны IIS до того как вы передали запрос в ASP.NET.

За дополнительной информацией по опознаванию Windows обращайтесь к следующей статье в документации по .NET Framework SDK:

Опознавание паспорта

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

За дополнительной информацией по опознаванию паспорта обращайтесь к следующей статье в документации по .NET Framework SDK:

Опознавание по умолчанию

Опознавание по умолчанию используется, если вы не хотите использовать безопасность в ваших веб-приложениях; для данной модели безопасности необходим анонимный доступ. Среди всех моделей опознавания, опознавание по умолчанию предоставляет максимальную производительность для вашего приложения. Данная модель опознавания также используется, если вы используете ваши собственные модули безопасности.

Разрешение доступа

Разрешение доступа - это процесс, который проверяет, имеет ли опознанный пользователь доступ к запрашиваемым ресурсам.

ASP.NET предоставляет следующие типы разрешения доступа:

Разрешение доступа к файлу

Класс ''FileAuthorizationModule'' осуществляет разрешение доступа к файлу и активен при использовании опознавания Windows. Класс ''FileAuthorizationModule'' несет ответственность за выполнение проверки по списку доступа Windows ''Windows Access Control Lists (ACLs)'' для определения должен ли пользователь получить доступ.

Разрешение доступа по Url

Класс ''UrlAuthorizationModule'' осуществляет разрешение доступа по ''Uniform Resource Locator'' (URL) контролирующее разрешение доступа по пространству имен URI. Пространство имен URI может быть отличным от физической папки или пути файла, которые используется для разрешений в NTFS. Класс ''UrlAuthorizationModule'' выполняет две схемы разрешения доступа: ''positive'' и ''negative'', это позволяет использовать модули для выборочного разрешения или запрещения доступа к произвольным частям пространства имен URI для пользователей, ролей (таких как, менеджеры, тестировщики, администраторы) и команд (таких как, ''GET'' и ''POST'').



За дополнительной информацией по разрешениям доступа в ASP.NET обратитесь к следующей статье в документации по .NET Framework SDK:
ASP.NET Authorization
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconaspnetauthorization.asp

Модель безопасности основанная на ролях

Безопасность основанная на ролях в ASP.NET схожа с безопасностью основанной на ролях, которую используют Microsoft COM+ и Microsoft Transaction Server (MTS), хотя они и имеют существенные различия. Безопасность, основанная на ролях в ASP.NET, не ограничивается учетными записями и группами Windows. Например, если в Windows включена имитация и идентификация пользователей, то идентичность пользователей представляет собой Windows (Пользователь.Идентичность.Имя = ''Домен\Имя пользователя''). Вы можете проверить идентичность для членов особых ролей и ограничить доступ соответствующим образом. Например:

Пример кода Visual Basic .NET
?????
If User.IsInRole(''BUILTIN\Administrators'') Then
   Response.Write(''You are an Admin'')
Else If User.IsInRole(''BUILTIN\Users'') then
   Response.Write(''You are a User'')
Else
   Response.Write(''Invalid user'')
                  End if
Пример кода Visual C# .NET
?????
if ( User.IsInRole(''BUILTIN\\Administrators''))
   Response.Write(''You are an Admin'');
else if (User.IsInRole(''BUILTIN\\Users''))
   Response.Write(''You are a User'');
else
                                                                                                         Response.Write(''Invalid user'');
Если вы используете опознавание форм, то роли не присоединяются к проверенным пользователям, поэтому вы должны сделать это программно. Чтобы присоеденить роли к проверенным пользователям, используйте событие ''OnAuthenticate'' модуля опознавания (которым является модуль опознавания форм в следующем примере) для создания нового объекта ''GenericPrincipal'' и присоединения его к свойству ''User'' контекста ''HttpContext''. Следующий пример кода показывает это:

Пример кода Visual Basic .NET
?????
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
   If (Not(HttpContext.Current.User Is Nothing)) Then
      If HttpContext.Current.User.Identity.AuthenticationType = ''Forms'' Then
         Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
         Dim myRoles(3) As String
         myRoles(0)= ''managers''
         myRoles(1)= ''testers''
         myRoles(2)= ''developers''
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles)
      End If
   End If
                     End Sub
Пример кода Visual C# .NET
?????
public void Application_AuthenticateRequest(Object s, EventArgs e)
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == ''Forms'' )
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= ''managers'';
         myRoles[1]= ''testers'';
         myRoles[2]= ''developers'';
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
     }
Чтобы проверить, имеет ли пользователь особую роль и соответствующие ограничения доступа, используйте следующий (или схожий) код в ваших страницах .aspx:

Пример кода Visual Basic .NET
?????
If User.IsInRole(''managers'') Then
   Response.Write(''You are a Manager'')
Else If  User.IsInRole(''testers'') Then
   Response.Write(''You are a Tester'')
Else If User.IsInRole(''developers'') Then
   Response.Write(''You are a Developer'')
                  End if
Пример кода Visual C# .NET
?????
if (User.IsInRole(''managers''))
   Response.Write(''You are a Manager'');
else if (User.IsInRole(''testers''))
   Response.Write(''You are a Tester'');
else if (User.IsInRole(''developers''))
                                                                                                                              Response.Write(''You are a Developer'');
За дополнительной информацией по безопасности основанной на ролях обратитесь к следующей статье в документации по .NET Framework SDK:
Role-Based Security
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconrole-basedsecurity.asp
За дополнительной информацией по безопасности основанной на ролях обратитесь к документации и исходному коду расположенному на веб-сервере IBuySpy:
IBuySpy Developer Solutions
http://www.ibuyspy.com

Ссылки

За дополнительной информацией по основным принципам безопасности ASP.NET обращайтесь к следующей статье в MSDN:
Authentication in ASP.NET: .NET Security Guidance
http://msdn2.microsoft.com/en-us/library/ms978378.aspx
За дополнительной информацией по ASP.NET обращайтесь в следующую группу новостей MSDN:
microsoft.public.dotnet.framework.aspnet

Свойства

Код статьи: 306590 - Последний отзыв: 29 октября 2007 г. - Revision: 3.6
Информация в данной статье относится к следующим продуктам.
  • Microsoft ASP .NET Beta 2
Ключевые слова: 
kbproductlink kbaspnet kbgrpdsasp kbinfo kbsecurity KB306590
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com