Клиент не может пройти аутентификацию на сайте IIS с использованием Kerberos

Клиент не может пройти аутентификацию на сайте IIS с использованием Kerberos

У нас есть несколько сайтов, размещенных на IIS, использующих проверку подлинности Windows. Некоторые из наших пользователей могут войти на один из сайтов, но получают бесконечный запрос аутентификации на другом (второй используется в iframe первого). Мы обнаружили, что пользователи, которые не могут войти, используют проверку подлинности Kerberos (другие — NTLM). Все сайты используют одинаковые настройки авторизации (useAppPoolCredentials установлен на true). Таким образом, пользователи могут получить доступ к одному сайту, но не могут получить доступ ко второму с теми же настройками. Пользователь удостоверения пула приложений находится в группе администраторов и группе IIS_IUSRS. Я также пытался использовать учетную запись пользователя домена для входа на сайт с виртуальной машины и получил тот же бесконечный запрос аутентификации из-за Kerberos. Я прочитал статью Чиранта Рамасвами об аутентификации IIS, но, к сожалению, не смог найти решение проблемы. Есть ли способ решить эту проблему?

EDIT: У нас также есть 2-й сервер с теми же сайтами и настройками.

EDIT2: Я обнаружил, что могу войти в систему, если использую учетную запись пользователя того же домена, если янепропишите домен в логине. Таким образом "UserName" работает, а "DomainName\UserName" нет

решение1

Там есть над чем поработать, и было бы полезно узнать больше подробностей, включая то, как вы настроили Kerb, какие еще сайты там есть и какие URL-адреса используются.

Короче говоря: я думаю, что Kerb сломан. И чтобы он заработал, вы могли бы использовать IP-адрес вместо имени. (Kerb работает только если вы используете имя, а не IP-адрес).

Подозреваю, что вы не расшифровываете тикеты в контексте учетной записи App Pool (которая, кстати, почти никогда не должна быть администратором).

Это может быть связано с дублированием SPN или какой-либо другой неисправностью Kerb.

Также возможно, что это настройка клиентского браузера, например «Включить встроенную проверку подлинности Windows», а не сценарий PAC и/или настройки зоны.

Итак! Список покупок:

  • Проверьте зону(ы), в которую загружается сайт, если вы используете IE.

  • Проверьте параметр «Включить интегрированную среду Windows», если используете IE.

  • Перезагрузите сломанный клиент (или по крайней мере klist purge) и затем получите трассировку netmon или wireshark неудавшегося соединения со стороны клиента. Это может выявить некоторые проблемы с ответом KDC, т. е. возвращаемые ошибки Kerberos, которые дают подсказку о том, что может сломать Kerb

  • Если вы используете useAppPoolCredentials, скорее всего, вы использовали SetSPN. Проверьте наличие дубликатов всех SPN, включающих имя(я) сайта(ов).

  • Наконец, если вы не используете делегирование, рассмотрите возможность удаления useAppPoolCredentials в любом случае, поскольку по умолчанию учетная запись System будет декодировать билеты для всех пулов приложений, если не установлено переопределение SPN.

решение2

После перезагрузки сервера я обнаружил, что useApplicationCredentials вернулся к false. Я изменил его на true и перезапустил IIS. После этого проблема не возникает. Но я не уверен, что это не совпадение. У нас та же проблема на другом сервере. 4 машины с одинаковыми настройками IIS. 2 не работают правильно через Kerberos, две работают. SPN не был настроен ни для одной из них. Кроме того, два работающих имеют false в useApplicationCredentials.

Я попробую тот же метод reboot-set useApplicationCredentials в true, если это не так, а затем iisreset. Но я почти уверен, что это не проблема. Я не могу понять, почему Kerberos работает, если SPN не установлен

Связанный контент