У нас есть печально известная проблема двойного перехода 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 не показывает дубликатов.
Заранее спасибо за вашу помощь!