在Windows 7(ASP.NET&Web服务)中出现“NT AUTHORITY \ ANONYMOUS LOGON”错误

问题描述:

我有一个asp.net web应用程序,它在域中的Windows XP计算机上正常工作。我将它移植到Windows 7独立式机器上。该应用程序使用一个Web服务,它调用了SQL Server。 Web服务器(IIS 7.5)和SQL Server位于同一*立计算机上。在Windows 7(ASP.NET&Web服务)中出现“NT AUTHORITY ANONYMOUS LOGON”错误

我为网站和Web服务启用了Windows身份验证。 Web服务使用可信连接连接字符串。 Web服务凭据使用System.Net.CredentialCache.DefaultCredentials。我注意到通话后用户名,​​密码和域名都是空白的!网络服务和网站使用具有NetworkServices身份的'Classic .NET AppPool'。

我在Web服务中的数据库调用中收到异常“NT AUTHORITY \ ANONYMOUS LOGON”。我假设它与空白凭证有关。

我期待ASPNET用户成为数据库的安全令牌。为什么这不会发生?我错过了一个设置? (通常发生这种情况时,sql server和web服务器是在一个域中的两台不同的机器,代表&双跳,但在我的情况下,一切都在开发盒上)

+0

我只是在IIS6中有完全相同的问题,不得不将认证模式更改为“基本认证”并禁用“集成Windows认证”。也许这也适用于IIS7。在堆栈溢出问题中找到答案:http://*.com/questions/1122072/asp-net-sqlserver-trust-and-delegation – WebDude 2010-06-10 08:06:13

您的问题似乎与Web服务将正确的凭据传递给SQL服务器。

有几层安全性供您检查。但首先也是最简单的是确保您已禁用除Windows集成以外的任何安全性。 IIS将始终使用最简单的安全协议。因此,如果您启用了匿名和Windows集成功能,那么您的网站将始终选择匿名。

接下来,IIS7 +中的每个站点都可在具有单独安全性的应用程序池下运行。然后根据所有IIS Windows服务在特定帐户下运行。

购买默认情况下,应用程序池和IIS安全性应该没有太大问题,因为它几乎可以直接使用,但值得检查。

我要检查的另一件事是SQL中的命名管道。我的知识并不广泛,但我知道命名管道可以用于各种应用程序之间的相同服务器上的通信,IIS和SQL就是其中的两种。

如果通过SQL配置管理器禁用了名称管道,那么我会期待一个不同的错误,但值得启用。

希望这会有所帮助。 Mike

听起来好像您正在经历“双跳”问题。这基本上意味着您不允许将客户端权限转发给第三方,通常是另一台计算机上的sql服务器。

我已经answered这个之前,也许这个答案会帮助你进一步。