Kerberos Double Hop



我们有臭名昭著的kerberos双跳问题。

这是一个崭新的领域,是从先前有效的另一个提供商中迁移的。我们已经升级了OS和最新的SQL Server(2017(。

WPF应用程序(使用域Creds( -> Web服务(IIS 10上的WCF应用程序( -> SQL 2017(命名实例(

Web服务在域帐户下运行。Web服务具有已注册的SPN,匿名auth被禁用,并且启用了ASP.NET模拟的表单Auth,并且启用了Windows auth。提供者是"协商和NTLM","内核模式"是禁用的,"使用App Pool凭据"已启用。SPN创建:

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

我们能够通过远程计算机上的浏览器登录到Web服务,输入域凭据并具有预期响应(显示网页(。IIS日志如预期显示域用户信誉。

SQL Server是一个命名实例,在域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>

AD中的IIS App Pool用户帐户已设置为端口和命名实例的SQL Server的约束委托书。

通过软件登录到Web服务(WPF调用WCF服务,没有数据库调用(,可以看到正常响应。

通过数据库调用登录软件到Web服务时,SQL Profiler显示匿名登录。在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显示不重复。

预先感谢您的帮助!

当其他所有操作失败时,您实际上花了几天的时间处理问题并阅读互联网上的每篇文章:

REBOOT

是的。那是解决方案。重新启动IIS服务器,该服务器是委派权限的服务器,修复了问题。

对于那些希望在IIS和SQL实例之间快速,轻松设置的委派的人,均在自定义域Creds下运行,将您的设置完全设置为上述并重新启动。

最好的祝福。

最新更新