У нас есть печально известная проблема двойного прыжка Kerberos.
Это совершенно новый домен, перенесенный из другого провайдера, где ранее работали олицетворение и делегирование. Мы обновили ОС и до последней версии SQL-сервера (2017).
Приложение WPF (с использованием кредитов домена) -> Веб-служба (приложение WCF на IIS 10) -> SQL 2017 (именованный экземпляр)
Веб-служба работает под учетной записью домена. В веб-сервисе зарегистрирован spn, анонимная аутентификация отключена, как и аутентификация форм, ASP.NET Impersonation и аутентификация Windows включены. Поставщики: «Согласовать и NTLM», «Режим Kernal» отключен, «Использовать учетные данные пула приложений» включен. SPN создано:
HTTP/<url of web service> <AppPool Creds>
Мы можем войти в веб-службу через браузер на удаленном компьютере, ввести учетные данные домена и получить ожидаемый ответ (отображается веб-страница). Журнал IIS показывает кредиты пользователей домена, как и ожидалось.
Сервер SQL является именованным экземпляром, работающим с правами доступа к домену. Создано 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 Server Profiler отображается Anonymous Logon. При включенном ведении журнала Kerberos на IIS появляется следующая ошибка:
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 не показывает дубликатов.
Заранее спасибо за помощь!