Аутентификация Windows не работает в IIS 7.5
У меня возникла проблема с получением проверки подлинности Windows для работы с IIS 7.5.
Приложение является внутренним сайтом, созданным в asp.net MVC 3. Пул приложений использует конкретного пользователя домена, и сайт использует проверку подлинности Windows. Каждый раз, когда я пытаюсь запустить IE, IE запрашивает у меня логин.
Если я отменил достаточно сайт, он перепутался, но у меня есть имя, связанное с моим журналом Windows, отображаемым наверху. Таким образом, это говорит мне, что сайт правильно подбирает мои учетные данные для Windows.
Я добавил локального пользователя сети, чтобы иметь доступ для чтения к папке inetpub на сервере, и теперь он не запрашивает логин с IE 8. Но на chrome я получаю эту ошибку "Ошибка 338 (net:: ERR_INVALID_AUTH_CREDENTIALS): Неизвестная ошибка.".
Он находится в зоне наших интрасети. Я должен был это сказать, но я забыл. Сайт использовался для работы на нашем старом сервере разработки, но когда я обновился до Win 2008 R2 с IIS 7.5, он перестал работать. Используется для работы в 2003 году с IIS 6.0.
Мне интересно, есть ли у кого-нибудь идеи, что еще я могу попробовать. В данный момент я довольно сильно вращаю свои колеса.
Я пробовал все решения в ссылках ниже, и ни одна из них не устранила проблему
http://forums.iis.net/t/1177154.aspx
http://forums.iis.net/t/1178188.aspx
Получение приглашения для входа с помощью встроенной проверки подлинности Windows
http://warnajith.blogspot.com/2011/06/iis-75-401-unauthorized-access-error.html
http://forums.asp.net/t/1639511.aspx/1
https://superuser.com/info/128746/iis-asks-for-login-pass-when-accessed-using-hostname-but-not-when-localhost-is
http://ask.metafilter.com/183636/Prompted-for-a-username-and-password-when-browsing-to-an-IIS-virtual-directory
IIS 7 и проверка подлинности Windows
Ответы
Ответ 1
Я нашел ответ на этот вопрос. Это параметр конфигурации, который не отображается в графическом интерфейсе. Мне пришлось зайти в файл конфигурации хоста приложения, расположенный в <% SystemDrive% > /Windows/System32/inetsrv/config, и изменить приведенные ниже настройки.
настройки по умолчанию, где
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
</providers>
</windowsAuthentication>
Изменено на это, и оно сработало.
<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true">
<providers>
<add value="NTLM" />
</providers>
</windowsAuthentication>
Ответ 2
Связанное примечание. Если вы пытаетесь реплицировать свой сайт на localhost, а проверка подлинности Windows включена и все еще не работает, решение - это хакерство реестра, чтобы избежать проверки петли:
Используя regedit, перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
Добавьте новое значение Multi-String в MSV1_0 и назовите его BackConnectionHostNames
Добавьте имена хостов, которые вы хотите использовать. Например, "mysite.com".
Перезапустите IIS.
Ссылка источника
Значение должно быть именем веб-сайта в вашем файле хостов Windows.
Также, чтобы иметь возможность доступа к папке с неидентифицированными/данными с помощью PHP file_get_contents, мне пришлось добавить это в файл applicationHost.config, чтобы предотвратить ошибки 401.
<location path="mysite.com/data">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
Ответ 3
Для того, чтобы интегрированные учетные данные были переданы IE, сайт должен находиться в вашей зоне сайтов интрасети. Он не может находиться на доверенных сайтах или на других сайтах.
Ответ 4
У меня была аналогичная проблема, и она была исправлена путем добавления группы пользователей (MYDOMAIN\Users) в физическую папку приложения с разрешениями на чтение.
Ответ 5
У меня есть аналогичная проблема, которая решается только путем перемещения NTLM поверх кеберосов в провайдерах, как объяснил Рори, или путем изменения DNS.
Проблема возникает только в IIS7, когда заголовок узла сайта существует как CNAME (псевдоним) в DNS.
в IIS6 встроенная проверка подлинности Windows использует только NTLM.
в IIS7 IWS использует кеберосы до NTLM по умолчанию.
Замена записи CNAME записью A решает проблему.
У Kerberos нет проблем с записями A в DNS, но у него есть проблемы с псевдонимами.
Таким образом, надежные DNS-CNAME не совместимы с kerberos в Windows 2008.
Крис
Ответ 6
Если браузер запрашивает учетные данные, я думаю, что ваши учетные данные для пула приложений не имеют доступа к некоторым ресурсам на вашей странице. Вы пытались создать пустую страницу html и получить доступ к этой странице?
<html>
<body>
hello world!
</body>
</html>
Ответ 7
У меня есть аналогичная проблема.
У меня было приложение под стандартным веб-сайтом, на котором уже включена проверка подлинности Windows, но она не работала. Я решил отключить анонимную аутентификацию на веб-сайте по умолчанию, а также включить проверку подлинности Windows на веб-сайте по умолчанию.