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

IIS 7.5 перепутал аутентификацию Windows и аутентификацию с помощью форм

Я наблюдаю странное поведение коробки Server 2008 R2, на котором запущены .net 4 и IIS 7.5 в интегрированном пуле приложений.

Корневой файл web.config довольно ясно показывает, что я хочу использовать проверку подлинности Windows.

<authentication mode="Windows"/>

никаких сюрпризов нет.

У меня есть каталог, который я хотел бы защитить, поэтому я добавил в этот каталог следующий файл web.config:

<configuration>
    <system.web>
        <authorization>
            <allow users="MYDOMAIN\MYUSER" />
            <deny users="*" />
        </authorization>
 </system.web>
</configuration>

Проверка подлинности Windows включена в IIS и указывается в корневом файле web.config, поэтому я ожидал, что появится обычное диалоговое окно «Запрос / ответ» и попросит ввести пароль. Вместо этого меня перенаправили на несуществующий URL http://mysite.com/Account/Login?ReturnUrl=%2ftestdir

Кажется, это каталог входа по умолчанию для проверки подлинности с помощью форм, который я не использую, поэтому запрос возвращает ошибку 404.

ACL в базовых каталогах позволяют предполагаемому пользователю получить доступ к файлу.

Кто-нибудь видел, как IIS ведет себя подобным образом?

Для справки в будущем это похоже на недоразумение между режимами аутентификации.

IIS 7+ имеет два режима - один с использованием встроенного набора параметров проверки подлинности уровня HTTP - в <system.webServer>и один для ASP.Net в <system.web>.

Поведение ASP.Net не становится доступным до тех пор, пока вы не запустите обработчик ASP.Net - в классическом или интегрированном режиме - а затем все еще (обычно) применяются после уровня IIS system.webServer/security настройки.

В приведенном выше примере добавление страницы ASP.Net изменило поведение (по крайней мере) этой страницы, и я бы угадать возможно, добавлены сопоставления обработчиков подстановочных знаков для обработки URL без расширений через .Net.

Также существует авторизация URL-адреса (IIS, т.е. system.webServer) против авторизации .Net (.Net, т.е. system.web) правила, которые следует учитывать - как правило, выберите один набор для каждого приложения и придерживайтесь его.

Думаю, я нашел ответ на этот вопрос, но он действительно странный. Я разместил на сайте простую страницу .chstml. Хотя это была всего лишь тестовая страница, похоже, что она каким-то образом наложила на IIS злое заклятие.

Синтаксис Razor действительно хорош, но кажется опасным смешивать его со стандартным сайтом веб-форм.