Я недавно провел три дня, пытаясь решить ту же проблему, и это сводило меня с ума. Это происходило при настройке с балансировкой нагрузки, когда один из серверов правильно проходил аутентификацию, а другой отказывал. Исследование проблемы - и, в конечном итоге, ее решение - оказалось, что она не связана со средой с балансировкой нагрузки, это может произойти с любым сервером при аутентификации с использованием аутентификации Windows, и сервер вызывается с именем, отличным от того, которое распознается Active Directory
1. Включить ведение журнала Kerberos
Чтобы правильно диагностировать вашу проблему, вам нужно будет включить ведение журнала Kerberos на компьютере, на котором размещен ваш сайт IIS. Для этого добавьте следующую запись реестра:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ LSA \ Kerberos \ Parameters
Добавить значение реестра LogLevel с ValueType REG_DWORD и значением
0x1 .
Как только вы включите ведение журнала, а затем попытаетесь пройти проверку подлинности, в журнале приложений Windows появятся сообщения об ошибках. Вы можете игнорировать ошибку KDC_ERR_PREAUTH_REQUIRED (это только часть рукопожатия), но если вы получаете ошибку KDC_ERR_C_PRINCIPAL_UNKNOWN , это означает, что ваш контроллер AD не распознает ваш сервер, поэтому вам нужно следовать шаги ниже.
2. KDC_ERR_C_PRINCIPAL_UNKNOWN
если вы получаете KDC_ERR_C_PRINCIPAL_UNKNOWN, это означает, что имя «mysite.mydomain.com» отличается от того, как AD распознает ваш компьютер, поэтому он не может предоставить действительный билет Kerberos. В этом случае вам нужно зарегистрировать имя участника службы (SPN) для «www.mysite.mydomain» в AD.
На вашем контроллере AD выполните эту команду - вам понадобятся привилегии администратора домена:
Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME
3. Используйте пользовательский идентификатор для вашего пула приложений
Наконец, заставьте ваш пул приложений использовать настраиваемую учетную запись, которая принадлежит Active Directory, а не использовать NetworkService. Это можно сделать в расширенных настройках пула приложений.
и .. вуаля.
Примечания. Проблема может (маловероятно) быть связана с тем, что несколько имен SPN зарегистрированы на одном компьютере, в этом случае вам потребуется выполнить команду для удаления дубликатов имен SPN, но я сомневаюсь, что это так. Также попробуйте добавить другую привязку к вашему сайту (которая не использует произвольное имя), например htttp: // localhost: custom_port_number, и посмотрите, работает ли аутентификация. Если это работает, это еще один признак того, что вы страдаете от той же проблемы, что и у меня.