У нас есть сайт MVC2, к которому нам нужно добавить аутентификацию Windows, для единственной цели захвата имени для входа в AD - сам сайт не должен быть ограничен. Все страницы на нем открыты для всех в нашей сети.
Итак, в нашем web.config у нас есть это:
<authentication mode="Windows" />
И несколько location
узлов, чтобы открыть различные области сайта для всех пользователей:
<location path="default">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path=".">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="sales/index">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Однако, когда мы пытаемся нажать, например, sales/index
, он запрашивает логин, и даже правильный логин выдаст 401:
Не авторизован
Ошибка HTTP 401. Запрашиваемый ресурс требует аутентификации пользователя.
Некоторые другие детали:
У нас нет каких-либо фильтров действий авторизации, потому что, как я сказал, весь сайт должен оставаться открытым для всех в нашей сети.
IIS (пул сайта и приложения) настроен одинаково, лучше всего сказать, другому сайту (MVC3), где работает аутентификация.
У нас также есть права доступа к папкам, настроенные одинаково между ними.
Единственное различие, о котором мы можем подумать на данный момент, состоит в том, что сломанный сайт - это сайт MVC2, а рабочий - сайт MVC3.
Неработающий сайт MVC2 будет запрашивать пользователя, тогда как работающий сайт MVC3 этого не делает - он использует сквозную аутентификацию.
Неработающий сайт MVC2 вернет тот же ответ для действительного пользователя, либо с действительным паролем, либо с неверным паролем.
Неработающий сайт MVC2 будет продолжать запрашивать имя пользователя / пароль, если введен неверный пользователь.