我发现各种谷歌的结果,但似乎没有解决我的问题。
我正在设置一个新的WINDOWS 2008 R2盒子,用于通过我们的Intranet中运行的IIS 7.5中的networking工具与现有的SQL 2012盒子进行通信。 我们要使用Windows身份validation – IE – > Web Server – > SQL。 我们正在使用Kerberos。 当在Web服务器本地查看工具时,一切正常,但是一旦我尝试在远程客户端上查看它,就会出现“用户login失败NT AUTHORITY \ ANONYMOUS LOGON”错误。
让我分解我们如何拥有网站 – 在经典模式下以ApplicationPoolIdentity身份运行.NET 2.0的应用程序池将Extended Protection设置为Off,启用Windows身份validation,启用内核模式身份validation,并且启用的Providers是(按顺序)谈判和NTLM。 ASP.NET模拟已启用设置为模拟为已validation的用户。
SQL连接string,格式如下:
Data Source=THESQLBOXNAME;Initial Catalog=DATABASENAME;Integrated Security=True
我有一个testing页,我已经放置在Web服务器(按照上述设置),显示以下数据:
HttpContext.Current.User.Identity.IsAuthenticated是true
HttpContext.Current.User.Identity.Name是预期的用户(用户启动浏览器)
System.Security.Principal.WindowsIdentity.GetCurrent.Name是预期的用户
我尝试一个基本的SQL查询到SQL框,并得到上面提到的login错误。
我已经检查了AD,并validation了网页框已经设置了委托 – “仅将此计算机委托给指定的服务/仅使用Kerberos”
我在运行IIS 7.5的现有WINDOWS 2008 R2框上运行了这个testing页面(使用上面提到的相同设置),并且没有任何错误。
我已经检查了这两个网页框的SPN设置,它们是相同的(机器名除外):
setspn -L EXISTINGBOX WSMAN/EXISTINGBOX.domain.com WSMAN/EXISTINGBOX TERMSRV/EXISTINGBOX.domain.com TERMSRV/EXISTINGBOX HOST/EXISTINGBOX.domain.com HOST/EXISTINGBOX RestrictedKrbHost/EXISTINGBOX.domain.com RestrictedKrbHost/EXISTINGBOX setspn -L NEWBOX WSMAN/NEWBOX.domain.com WSMAN/NEWBOX TERMSRV/NEWBOX.domain.com TERMSRV/NEWBOX HOST/NEWBOX.domain.com HOST/NEWBOX RestrictedKrbHost/NEWBOX.domain.com RestrictedKrbHost/NEWBOX
我意识到它的行为像双跳问题,但事实上,它在另一个盒子上工作,使我觉得这是新的networking框专用。 我错过了什么?
我能想到的最后两件事是检查你有注册的SQL服务器服务帐户下的MSSQLSvc SPNs(你可能已经有了一个工作场景)。 以防万一:
如果这样做,然后返回到您拥有信任选项的AD选项卡,请将SQL Server帐户添加为允许的服务之一。 如果是正确的,你应该在列表中看到MSSQLSvc *。
如果上述方法不起作用,那么您必须启用Keberos跟踪或使用networking跟踪来查找Kerberos错误。
检查非工作的IIS服务器是否具有“trust for computers for delegation”设置: http : //blogs.technet.com/b/taraj/archive/2009/01/29/checklist-for-double-hop-issues-iis -and-SQL server.aspx