У меня есть приложение ASP.NET на сервере Windows 2008, IIS 7.5.
Когда я пытаюсь получить доступ к веб-сайту, я получаю всплывающее окно входа в систему. Если я нажму «отменить», я получу 401 - Несанкционированный: доступ запрещен из-за неверных учетных данных. Приложение использует проверку подлинности Windows (анонимность отключена).
У приложения есть собственный пул приложений, работающий под идентификатором пула приложений. Если я изменю пул приложений для работы под учетной записью NetworkService, мой веб-сайт будет работать нормально.
Я предполагаю, что это просто проблема с разрешениями, но не могу понять, какие разрешения мне нужно изменить.
Я дал разрешения App Pool Identity для физического каталога приложения, но это не решило проблему.
У меня также возникла эта проблема, когда я переключил свою учетную запись пула приложений IIS с NetworkService на учетную запись пользователя домена. Я не мог получить доступ к сайту извне (401 - Неавторизованный), но на самом сервере я мог получить доступ к сайту.
Проблема, похоже, связана с аутентификацией Kerberos. IIS 7 сначала пытается использовать Kerberos и не может правильно пройти аутентификацию (требуется дополнительная настройка). Если вы отключите Kerberos, вы можете обнаружить, что действительно можете получить доступ к веб-сайту с внешнего компьютера:
Вы можете выполнить быстрый тест, чтобы проверить, связана ли ваша проблема с аутентификацией Kerberos:
Эта проблема возникала у меня несколько раз, когда я переносил сайты с IIS6 (по умолчанию на NTLM) на 7 (по умолчанию на Kerberos). Я не хотел настраивать Kerberos, поэтому вместо этого я заставил свой веб-сервер IIS использовать только NTLM с помощью следующей команды: cscript «F: \ inetpub \ AdminScripts \ adsutil.vbs» установить w3svc / NTAuthenticationProviders «NTLM»
Значение по умолчанию - «Согласование, NTLM». Чтобы проверить существующее значение, используйте: cscript "F: \ inetpub \ AdminScripts \ adsutil.vbs" get w3svc / NTAuthenticationProviders
Если у кого-то есть более глубокое понимание того, почему проверка подлинности Kerberos не выполняется, дайте мне знать. Кроме того, если кто-нибудь знает, как принудительно выполнить проверку подлинности NTLM только для определенных пулов приложений, а не для всего веб-сервера IIS, дайте мне знать.
В большинстве случаев предоставления доступа к контенту пула приложений должно быть достаточно. Поскольку он по-прежнему запрашивает, но не для NetworkService, я предполагаю, что подпапка не получила новые разрешения, которые вы добавили, или есть другая зависимость, которую сайт имеет от чего-то вроде реестра.
Попробуйте использовать стандартную страницу .htm, чтобы убедиться, что корень сайта работает. Дважды проверьте, что предоставлен правильный идентификатор пула приложений и указан ли правильный путь.