Kerberos Double Hop

У нас есть печально известная проблема двойного перехода Kerberos.

Это совершенно новый домен, который переносится с другого провайдера, где ранее работало олицетворение и делегирование. Мы обновили ОС и до последней версии SQL-сервера (2017 г.).

Приложение WPF (с использованием кредитов домена) -> Веб-служба (приложение WCF в IIS 10) -> SQL 2017 (именованный экземпляр)

Веб-служба работает под учетной записью домена. У веб-службы зарегистрирован spn, анонимная проверка подлинности отключена, как и проверка подлинности форм, включена олицетворение ASP.NET и проверка подлинности Windows. Поставщики: «Согласование и NTLM», «Режим ядра» отключен, «Использовать учетные данные пула приложений» включен. SPN создано:

HTTP/<url of web service> <AppPool Creds> 

Мы можем войти в веб-службу через браузер на удаленном компьютере, ввести учетные данные домена и получить ожидаемый ответ (отображается веб-страница). Журнал IIS показывает кредиты пользователей домена, как и ожидалось.

Сервер SQL - это именованный экземпляр, работающий под доменом creds. Создано SPN:

MSSQLSvc/<fqdn>:<Instance> <SQL Domain Creds>

MSSQLSvc/<sql server netbios>:<Instance> <SQL Domain Creds>

MSSQLSvc/<fqdn>:<port> <SQL Domain Creds>

MSSQLSvc/<sql server netbios>:<port> <SQL Domain Creds>

Учетная запись пользователя пула приложений IIS в AD настроена для ограниченного делегирования серверу SQL как для порта, так и для именованного экземпляра.

При входе через программное обеспечение в веб-службу (WPF вызывает службу WCF без вызова базы данных) наблюдается нормальный ответ.

При входе через программное обеспечение в веб-службу с вызовом базы данных профилировщик sql показывает анонимный вход. Если в поле IIS включено ведение журнала Kerberos, появляется следующая ошибка:

Error Code: 0xd KDC_ERR_BADOPTION

Extended Error: 0xc0000225 KLIN(0)

Server Name: MSSQLSvc/<sql server fqdn>:49942

Target Name: MSSQLSvc/<sql server fqdn>:49942@<domain.com>

Мы также попробовали неограниченное делегирование, но получили тот же результат.

SETSPN -X не показывает дубликатов.

Заранее спасибо за вашу помощь!


person Greg    schedule 26.04.2018    source источник
comment
KDC_ERR_BADOPTION обычно подразумевает проблему со средним сервером (в данном случае сервером IIS). Можете ли вы удалить NTLM как провайдера? вы не хотите, чтобы это было даже вариантом. NTLM может выдавать ложное срабатывание, что сервер IIS настроен правильно.   -  person StrayCatDBA    schedule 26.04.2018
comment
в порядке. NTLM удален. IIS перезапущен. Та же проблема. Зашел на сайт с доменными именами и продолжил работать в прежнем режиме. Также протестировал софт без попадания в базу данных, и он тоже работает по-прежнему. Я согласен, что эта проблема связана с промежуточным сервером. Я заметил, что сообщение об ошибке вставлено неправильно, поэтому обновил его.   -  person Greg    schedule 26.04.2018
comment
это совершенно новый домен. некоторые из ваших серверов все еще находятся в более старом домене AD? Если да, проверьте их уровни совместимости. Если, например, одна AD работает в режиме совместимости 2003, она не будет поддерживать некоторые параметры шифрования для билетов Kerberos. KDC_ERR_BADOPTION   -  person Tagar    schedule 26.04.2018
comment
Нет. Все - Windows 2016. Домен был запущен с нуля, а не при миграции.   -  person Greg    schedule 26.04.2018


Ответы (1)


Когда все остальное терпит неудачу, и вы буквально целыми днями работали над проблемой и читали все статьи в Интернете:

REBOOT

Ага. Это было исправлением. Перезагрузка сервера IIS, который был сервером, делегировавшим разрешения, устранила проблему.

Для тех, кто хочет быстро и легко настроить ограниченное делегирование между IIS и экземпляром SQL, оба работают под пользовательскими правами домена, установите свои настройки точно так же, как указано выше, и перезагрузитесь.

С наилучшими пожеланиями.

person Greg    schedule 26.04.2018
comment
Отметьте свой ответ как принятый. Это допустимо. Это указывает на вопрос другим, которые также могут искать ту же проблему. - person T-Heron; 30.04.2018