Использование делегирования конфигурации в IIS 7.0
Краткие сведения
В этой статье объясняется, как включить делегированную конфигурацию на сервере. В ней рассматривается развертывание параметров конфигурации для сервера и приложений, а также страниц содержимого и кода приложения.
После того как администратор компьютера определил приложение или виртуальный каталог для использования в файле %windir%\system32\inetsrv\config\applicationHost.config
конфигурации master и разрешил делегировать определенные разделы, вы можете управлять параметрами на уровне приложения: задав параметры в файле web.config приложения, вы переопределите глобальные значения по умолчанию. Это возможно, если у вас есть доступ к каталогу приложения, даже если вы не являетесь локальным администратором на компьютере.
Прочитав этот документ, вы узнаете, как определять приложения и виртуальные каталоги на глобальном уровне, разблокировать разделы конфигурации для делегирования и переопределять параметры конфигурации для отдельных приложений на более низком уровне иерархии конфигурации.
Введение
СЛУЖБЫ IIS позволяют администраторам компьютеров делегировать задачу настройки и изменения конфигурации владельцам сайтов и приложений. Для этого используйте web.config файлы в каталогах содержимого. Эти файлы указывают разделы конфигурации, которые вступают в силу на их уровне в иерархии и вниз. Администратор компьютера должен явно разблокировать разделы на глобальном уровне, чтобы включить такое делегирование. По умолчанию большинство разделов IIS заблокированы для делегирования, а все разделы платформы .NET Framework (включая ASP.NET) не блокируются на глобальном уровне.
В этом документе объясняется, как определять новые приложения и виртуальные каталоги на глобальном уровне (эту задачу могут выполнять только администраторы компьютеров; она никогда не может быть делегирована).
Затем в этом документе объясняется, как xcopy-deploy web.config с содержимым приложения, чтобы переопределить некоторые параметры для определенного уровня. В нем также описываются основные понятия системы конфигурации и, следовательно, объясняется, как выполнять эти задачи с помощью прямого редактирования файлов конфигурации без использования пользовательского интерфейса или других абстракций поверх системы конфигурации.
Предварительные требования
- Убедитесь, что на компьютере установлены службы IIS 7.0 или более поздней версии. Перейдите в
http://localhost/
IE и убедитесь, что откроется страница по умолчанию "Под конструкцией". Если службы IIS не установлены, см. инструкции по установке в How-To установки. - Убедитесь, что у вас есть права администратора на компьютере. По умолчанию они отсутствуют, если вы вошли в систему от имени пользователя, отличного от встроенной учетной записи администратора, даже если этот пользователь был добавлен в локальную группу администраторов на компьютере. Это новая функция безопасности в Windows Server® 2008 под названием LUA, которая выходит за рамки область IIS. Выполните вход с помощью встроенной учетной записи администратора или явным образом вызывайте приложения в качестве встроенного администратора при необходимости с помощью средства cmd-line runas:
Например, чтобы запустить notepad.exe, выполните следующую команду: "runas /user:administrator notepad.exe". Вам будет предложено ввести пароль учетной записи администратора. Полезно иметь оболочку cmd-box с повышенными привилегиями, выполнив команду runas /user:administrator cmd.exe. Каждое приложение, выполняемое из этого cmd-box, также имеет повышенные привилегии, и вам не нужно использовать синтаксис runas из этого cmd-box.
- Убедитесь, что создана резервная копия файла конфигурации master. Просто скопируйте applicationHost.config в другой файл, чтобы восстановить его позже. Вы найдете applicationHost.config в каталоге inetsrv\, который, в свою очередь, находится в системном каталоге.
Примечание
Для этого необходимо быть администратором. См. предыдущий пункт выше.
- Перед началом работы убедитесь, что вы находитесь в "чистом состоянии". Для этого отменить изменения изменения, внесенные в файл applicationHost.config в предыдущих упражнениях. (Если вы используете образ VPC, самый простой способ сделать это — перезапустить образ, не сохраняя его состояние.
- Рекомендуется отключить понятные сообщения об ошибках HTTP в IE (дополнительные параметры>инструментов>) для быстрого устранения неполадок.
Шаг 1. Определение нового приложения
В текстовом редакторе, например Блокноте, откройте файл ApplicationHost.config в следующем расположении:
%windir%\system32\inetsrv\config\applicationHost.config
Перейдите к разделу
<sites>
, который выглядит примерно так:<sites> <siteDefaults> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool"/> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> <application path="/"> <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" /> </application> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </site> </sites>
Убедитесь, что веб-сервер запущен и у вас есть доступ к веб-сайту по умолчанию. Для этого запустите браузер и запросите
http://localhost/
Запрос должен вернуть веб-страницу. Если это не так, запустите сервер IIS, введя "net start w3svc" в командном поле или устраните неполадки с помощью средства просмотра журнала событий Windows.
Запросите в браузере
http://localhost/
Этот запрос не возвращает страницу (вы видите страницу ошибки), так как виртуальный путь еще не определен в конфигурации— это следующая процедура.
В файле ApplicationHost.config добавьте элемент с путем
<application>
"/app", включающий элемент верхнего уровня<virtualDirectory>
. Виртуальный каталог верхнего уровня — это каталог с путем "/". Для физического пути к виртуальному каталогу укажитеC:\tmp
(или что-то подобное, с которым вы будете работать позже).После завершения
<sites>
работы разделы будут выглядеть примерно так:<sites> <siteDefaults> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool"/> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> <application path="/"> <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" /> </application> <application path="/app" > <virtualDirectory path="/" physicalPath="C:\tmp" /> </application> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </site> </sites>
Вы только что определили новое приложение в файле конфигурации.
Запросите в браузере
http://localhost/
Веб-сервер возвращает страницу с сообщением о том, что просмотр каталогов не включен. Это происходит потому, что у вас еще нет содержимого в
c:\tmp
, поэтому сервер обрабатывает запрос как запрос на просмотр каталога. Скопируйте iisstart.htm из\inetpub\wwwroot
каталога вc:\tmp
и обновите браузер. Теперь вы увидите страницу Под строительством.
Шаг 2. Разблокировка разделов конфигурации
С помощью текстового редактора, например Блокнота, откройте applicationHost.config и найдите группу <разделов проверки подлинности> .
<Переместите anonymousAuthentication> и
<windowsAuthentication>
разделы из их текущего расположения в файле в новый тег расположения в нижней части файла с overrideMode="Allow" следующим образом:<configuration> <system.webServer> <security> <authentication> <!-- cut the anonymousAuthentication and windowsAuthentication --> <!-- XML elements from this area in the file, and paste below --> </authentication> </security> </system.webServer> <location overrideMode="Allow"> <system.webServer> <security> <authentication> <!-- paste the 2 sections from above here --> </authentication> </security> </system.webServer> </location> </configuration>
Эти разделы теперь являются более доступными для более низких уровней пространства имен, так как они находятся в теге location, который указывает overrideMode="Allow". Теперь все файлы web.config нижнего уровня могут переопределять эти параметры.
Шаг 3. Переопределение параметров на уровне приложения
С помощью текстового редактора, такого как Блокнот, создайте новый текстовый файл в папке приложения (например,
c:\tmp
) с именемweb.config.В файле web.config создайте
<configuration>
элемент и элемент в качестве его дочернего<system.webServer>
элемента. В элементе<system.webServer>
создайте<security>
элемент , содержащий<authentication>
элемент .Введите параметры, чтобы отключить проверка подлинности Windows и анонимные схемы проверки подлинности, которые включены по умолчанию на глобальном уровне.
По завершении файл web.config будет выглядеть следующим образом:
<configuration> <system.webServer> <security> <authentication> <windowsAuthentication enabled="false" /> <anonymousAuthentication enabled="false" /> </authentication> </security> </system.webServer> </configuration>
В браузере запросите
http://localhost/app
.Примечание
Вы не авторизованы для просмотра страницы, так как вы отключили все методы проверки подлинности для этой страницы в файле web.config.
В браузере запросите
http://localhost/
и подтвердите, что у вас есть доступ к странице. Конфигурация в файле web.config применяется только на уровне приложения.В файле web.config включите обычную проверку подлинности, добавив элемент с включенным атрибутом
<basicAuthentication>
, равным true.По завершении файл web.config будет выглядеть следующим образом:
<configuration> <system.webServer> <security> <authentication> <windowsAuthentication enabled="false" /> <anonymousAuthentication enabled="false" /> <basicAuthentication enabled="true" /> </authentication> </security> </system.webServer> </configuration>
Запрос
http://localhost/app
еще раз. Вы увидите страницу с сообщением об ошибке о том, что какая-то конфигурация заблокирована на глобальном уровне, и web.config файлы пытаются переопределить ее, поэтому это ошибка конфигурации. Чтобы устранить эту проблему, разрешите <переопределить раздел basicAuthentication> на глобальном уровне (applicationHost.config), как и для двух других разделов. Затем обновите браузер .Теперь вам будет предложено ввести имя пользователя и пароль, что означает, что выполняется обычная проверка подлинности.
Введите имя пользователя и пароль вошедшего в систему пользователя и обратите внимание, что откроется страница.
При запросе
http://localhost/
вам не будет предложено ввести имя пользователя и пароль, так как внесенные изменения в конфигурацию применяются только на уровне приложения.Примечание
Как сервер, так и браузер кэшируют маркер пользователя. Если вы хотите начать с нуля и вы больше не видите запрос имени пользователя, закройте браузер и остановите рабочий процесс IIS (или выполните команду "net stop /y http" из командной строки Windows, а затем "net start w3svc", чтобы перезапустить СЛУЖБЫ IIS).
Итоги
В этом документе объясняется, как определить приложения и виртуальные каталоги в файле конфигурации master applicationHost.config. В нем также описывается, как развернуть файлы конфигурации для конкретного <system.webServer>
приложения, содержащие параметры сервера в разделе . Вы можете добавить параметры в файл web.config в <system.web>
группе разделов, например параметры ASP.NET.
Рекомендуется настроить списки управления доступом (ACL) в файле web.config или во всем каталоге приложения, чтобы пользователи без прав администратора не могут получить доступ к файлу.