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


Использование делегирования конфигурации в IIS 7.0

Саад Ладки (Saad Ladki)

Краткие сведения

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

После того как администратор компьютера определил приложение или виртуальный каталог для использования в файле %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. Определение нового приложения

  1. В текстовом редакторе, например Блокноте, откройте файл ApplicationHost.config в следующем расположении:

    %windir%\system32\inetsrv\config\applicationHost.config
    
  2. Перейдите к разделу <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>
    
  3. Убедитесь, что веб-сервер запущен и у вас есть доступ к веб-сайту по умолчанию. Для этого запустите браузер и запросите http://localhost/

  4. Запрос должен вернуть веб-страницу. Если это не так, запустите сервер IIS, введя "net start w3svc" в командном поле или устраните неполадки с помощью средства просмотра журнала событий Windows.

  5. Запросите в браузере http://localhost/

    Этот запрос не возвращает страницу (вы видите страницу ошибки), так как виртуальный путь еще не определен в конфигурации— это следующая процедура.

  6. В файле 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>
    

    Вы только что определили новое приложение в файле конфигурации.

  7. Запросите в браузере http://localhost/

    Веб-сервер возвращает страницу с сообщением о том, что просмотр каталогов не включен. Это происходит потому, что у вас еще нет содержимого в c:\tmp, поэтому сервер обрабатывает запрос как запрос на просмотр каталога. Скопируйте iisstart.htm из \inetpub\wwwroot каталога в c:\tmp и обновите браузер. Теперь вы увидите страницу Под строительством.

Шаг 2. Разблокировка разделов конфигурации

  1. С помощью текстового редактора, например Блокнота, откройте applicationHost.config и найдите группу <разделов проверки подлинности> .

  2. <Переместите 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. Переопределение параметров на уровне приложения

  1. С помощью текстового редактора, такого как Блокнот, создайте новый текстовый файл в папке приложения (например, c:\tmp) с именемweb.config.

  2. В файле web.config создайте <configuration> элемент и элемент в качестве его дочернего <system.webServer> элемента. В элементе <system.webServer> создайте <security> элемент , содержащий <authentication> элемент .

  3. Введите параметры, чтобы отключить проверка подлинности Windows и анонимные схемы проверки подлинности, которые включены по умолчанию на глобальном уровне.

    По завершении файл web.config будет выглядеть следующим образом:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  4. В браузере запросите http://localhost/app.

    Примечание

    Вы не авторизованы для просмотра страницы, так как вы отключили все методы проверки подлинности для этой страницы в файле web.config.

  5. В браузере запросите http://localhost/ и подтвердите, что у вас есть доступ к странице. Конфигурация в файле web.config применяется только на уровне приложения.

  6. В файле 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>
    
  7. Запрос http://localhost/app еще раз. Вы увидите страницу с сообщением об ошибке о том, что какая-то конфигурация заблокирована на глобальном уровне, и web.config файлы пытаются переопределить ее, поэтому это ошибка конфигурации. Чтобы устранить эту проблему, разрешите <переопределить раздел basicAuthentication> на глобальном уровне (applicationHost.config), как и для двух других разделов. Затем обновите браузер .

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

  8. Введите имя пользователя и пароль вошедшего в систему пользователя и обратите внимание, что откроется страница.

    При запросе 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 или во всем каталоге приложения, чтобы пользователи без прав администратора не могут получить доступ к файлу.