Назад | Перейти на главную страницу

Можно ли настроить базовую аутентификацию только для привязки одного конкретного домена?

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

Информация привязки для веб-сайта используется, чтобы определить, на какой веб-сайт направляются входящие запросы. (службой активации Windows и http.sys).

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

У вас есть как минимум два варианта:

Вариант первый заключается в использовании двух отдельных веб-сайтов, указывающих на один и тот же физический каталог и использующих один и тот же файл web.config в корне сайта.

У вас по-прежнему могут быть разные методы аутентификации для двух сайтов.

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

Вариант второй включает Модуль перезаписи URL

Предположим, у вас есть два имени хоста, привязанных к сайту. normal.serverfault.com и secure.serverfault.com.

Создать виртуальный каталог secure под корнем сайта, но укажите его в тот же физический каталог самого сайта (такой же, как и в корне).

Для виртуального каталога отключите анонимную аутентификацию и включите базовую аутентификацию.

Теперь добавим на сайт правило перезаписи:

<rewrite>
  <rules>
      <rule name="Secure">
          <match url=".*" />
          <conditions>
              <add input="{SERVER_NAME}" pattern="^secure\.serverfault\.com$" />
          </conditions>
          <action type="Rewrite" url="/secure/{R:0}" />
      </rule>
  </rules>
</rewrite>

Мы переписываем все запросы на использование secure виртуальный каталог, но только если имя хоста secure.serverfault.com

Теперь пользователи используют normal.serverfault.com все еще может получить доступ к сайту без аутентификации, но при использовании secure.serverfault.com они должны войти в систему.

Одна проблема, которую я вижу с этим вариантом, заключается в том, что web.config в корне вашего сайта в основном обрабатывается дважды для переписанных запросов.

Несмотря на то, что он существует только один раз физически, при выполнении запроса в \secure\ один раз он рассматривается как локальный для виртуального каталога и еще раз для родительского каталога. Поэтому вы должны убедиться, что у вас нет настроек, которые не поддерживают это. Например <add... узлы нельзя дублировать, вы должны использовать <clear... или <remove... чтобы обойти это. Или вы переносите настройки в ApplicationHost.config.

Вы должны протестировать свой сайт с этой настройкой, но поскольку браузер никогда не знает, что URL-адрес был переписан, он должен работать нормально.