Работа с разделом <identity>
Раздел настроек <identity> позволяет настраивать параметры заимствования прав для вашего приложения ASP.NET. Заимствование прав – это способность приложения действовать от имени пользователя при доступе к другим ресурсам. После аутентификации пользователя в IIS его опознавательный признак передается в ASP.NET, где он может использоваться для персонализации пользователя в других ресурсах. Если пользователь не аутентифицирован в IIS, в приложение ASP.NET передается признак отсутствия аутентификации.
Пример из практики. Заимствование прав полезно при работе в среде интранет, которая использует аутентификацию Windows, где пользователи являются частью домена. После успешной аутентификации пользователя в IIS ASP.NET может использовать его права при доступе к общим файлам или серверам.Ниже показан синтаксис раздела <identity>.
<identity impersonate="true | false" username="domain\username" password="password" />
Свойства раздела < identity > приведены в таблице 4.14.
impersonate | Определяет, включено ли заимствование прав.
true Заимствование прав включено. false Заимствование прав отключено. | |
username | Определяет имя пользователя, используемое при включенном заимствовании прав. | |
password | Определяет пароль, используемый при включенном заимствовании прав. |
Имеется два режима заимствования прав, которые можно использовать в приложении. Первый режим использует имя пользователя и пароль, переданные из IIS, а второй режим – имя пользователя и пароль, указанные в настроечном файле. Ниже приведен пример реализации первого режима заимствования прав.
<identity impersonate="true" />
Такой метод заимствования прав использует любые имя пользователя и пароль, переданные из IIS в среду выполнения ASP.NET. Вот пример реализации второго типа заимствования прав.
<identity impersonate="true" userName="Microsoft\James" password="frequency" />
- Когда приложение пытается получить доступ к ресурсу, который требует аутентификации, для аутентификации в этом ресурсе используются указанные здесь имя пользователя и пароль.
Хранение имени пользователя и пароля в формате простого текста, как в данном случае, ведет к проблемам безопасности. Файл .config защищен от запросов со стороны пользователей и доступ к нему через IIS или любой другой метод, основанный на веб, запрещен. Однако доступ к этим файлам возможен, если у пользователя есть доступ к серверу или заимствованные права на доступ к этому файлу. Имеется возможность хранить имя пользователя и пароль в зашифрованном формате в реестре. Это делается следующим образом. В настроечном файле установите значения имени пользователя и пароля в:
<identity impersonate="true" userName= "registry:HKLM\Software\AspNetLogin\ASPNET_SETREG,userName" password= "registry:HKLM\Software\AspNetLogin\ASPNET_SETREG,password" />
Теперь настроечный файл будет считывать значения имени пользователя и пароля из реестра сервера. - Чтобы установить значения в реестре, используйте консольное приложение aspnet_setreg.exe. Это небольшое приложение, которое можно скачать с Microsoft Download Center или напрямую по ссылке http://download.microsoft.com/download/asp.net/Utility/1.0/WIN98MeXP/EN-US/Aspnet_setreg.exe
- Распакуйте приложение, откройте командную строку и перейдите в директорию, в которую вы распаковали файлы.
- Введите в командной строке следующее: aspnet_setreg –k:Software\AspNetLogin\Identity – u:UserName –p:Password
Замените AspNetLogin\Identity на тот ключ, который вы хотите использовать. Этот ключ будет создан автоматически. Замените UserName и Password на корректные значения имени пользователя и пароля для вашего приложения. - Найдите ключ в реестре и проверьте, что процесс ASP.NET имеет доступ к этому значению, сделав щелчок правой кнопкой мыши на ключе и выбрав Permissions (Разрешения). Если имя пользователя ASP.NET не указано, добавьте его в список. Прежде чем права доступа вступят в силу, вы должны будете перезапустить процесс IIS.
После этого эти элементы в реестре будут зашифрованы и готовы для доступа из настроечных файлов.