用户'NT AUTHORITY \ ANONYMOUS LOGON'

时间:2018-06-14 07:46:43

标签: sql-server iis linked-server

我有一个连接到SQL 2012数据库的IIS 7.0服务器。在SQL数据库中,我添加了许多链接服务器,并创建了一个分布式分区视图,以整合来自多个链接服务器的数据。我在主服务器上有一个共同的Windows帐户,并且所有链接的服务器都是共同的(相同的密码)。在SQL服务器上从SSMS查询此视图可以正常登录为普通用户。我正在使用的应用程序池使用同一个用户(也在IIS服务器上)使用集成安全性连接到SQL服务器。当从IIS运行报告普通用户时,我有一个简单的SELECT SYSTEM_USER查询。当尝试从链接服务器视图中检索数据时,我的用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。而不是视图中的数据。

帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

这基本上就是这样:如果您正在运行Active Directory,这就是着名的"double-hop" problem。双跳是一个术语,用于描述Microsoft在两个或多个连接上维护Kerberos身份验证凭据的方法。您必须在运行应用程序池的AD帐户上配置Kerberos委派,以便它可以将凭据转发到SQL 2012数据库服务器。您可以在AD帐户的“委派”选项卡上进行配置。如果没有Kerberos委派,则不会转发AD凭据,而是由IIS服务器发送本地凭据,并由SQL服务器拒绝。由于SQL Server无法理解IIS 7服务器的本地凭据,因此它将其拒绝为匿名登录尝试。我提供的链接详细描述了解决此问题的方法,并解释了如何将其扩展到其他服务器。请注意,如果您不使用Active Directory并且仅使用本地身份验证,则使用NTLM并且无法将NTLM凭据委派给系统,因此对SQL Server的身份验证将采用匿名身份验证的形式。