SQL Server 2000 + ASP.NET:用户'NT AUTHORITY \ ANONYMOUS LOGON'login失败

我刚刚迁移了一个开发工作站

  • 从:与IIS 6的Windows XP专业版SP3
  • TO:带有IIS 7的Vista Enterprise 64bit

由于移动,我访问SQL Server 2000数据库的页面之一是从我的ASP.NET 2.0网页收到以下错误:“login失败的用户'NT AUTHORITY \ ANONYMOUS LOGON'”。

我有:

  • 在IIS和web.config中启用Windows身份validation
  • 在IIS中禁用匿名身份validation
  • 设置模拟作为经过身份validation的用户运行
  • validationlogin的用户(在本例中为我)可以访问SQL Server上的相应数据库
  • 通过检查User.Identity.Name和System.Security.Principal.WindowsIdentity.GetCurrent()来validation我的login和模拟信息在ASP.NET页面中是否正确。名称(都显示我的用户名)

使用SqlConnection的连接string是“服务器= {SERVER_NAME};数据库= {DB_NAME};集成安全性= SSPI; Trusted_Connection = True;”

为什么要用NT AUTHORITY \ ANONYMOUS LOGINlogin? 我必须假定它是一些特定于IIS7的设置或web.config条目,因为它在迁移之前工作正常。

注:SQL Server只是Windows身份validation – 不能使用混合模式或SQL。

在我看来,像约束委派没有启用: configuration服务器委派 。

我知道这是一个迟到的答复,但我也偶然遇到了同样的问题,并解决了这个问题。 想和大家分享一下。

我可以理解为什么你可能不想引入SQL身份validation,因为客户可能不赞成这一点。

要使Windows身份validation正常工作,您可以执行以下步骤:

1)在web.config中指定对Windows的身份validation

2)在web.config中将身份模拟为true

3)为应用程序创build一个新的域虚拟用户,比如说[email protected],用一些密码

4)在模拟部分,指定此用户名和密码

5)在IIS中,删除匿名访问并检查集成的Windows身份validation

6)使用aspnet_regiis -ga“mydomain \ username”提供对新的用户访问IIS元数据库的访问权限

7)为这个用户提供对虚拟目录的物理目录的访问权限。 您将需要在此添加此用户。

8)请注意,如果您的应用程序正在写入某个日志文件,则还需要提供“写入”权限

9)请注意,如果您的应用程序正在访问一些数据库,并执行一些存储的特效,则需要将该用户添加到具有dbowner权限的sql serverlogin。

此外,您可能不想陷入安全陷阱提供访问NT权威/匿名login,所以在这种情况下创build自己的应用程序用户将有所帮助。

我希望它可以帮助,如果它要求你作为“答案”

我遇到了同样的问题,使用SQL Server 2008数据库。 虽然可能有不同的方法来解决这个问题,但由于亚当的联系,我能够find这个部分,这解决了我的情况:

5)默认情况下,Windowsauthentication在内核中执行。 这可能会导致发送初始请求凭据的HTTP客户端失败。

IIS 7.0内核模式身份validation在IIS 7.0中默认启用。 这提高了Windows身份validation的性能,并简化了Kerberos身份validation协议的部署。 但是,由于内核模式身份validation的devise限制,可能会导致某些客户端在初始请求时发送Windows凭据失败。 普通的浏览器客户端不会受到影响,因为他们总是匿名发送初始请求。

注意:此重大更改适用于经典和集成模式。

在IISpipe理器中禁用“内核模式”解决了问题,正确地发送凭据。

您是否尝试编辑应用程序池并将pipe理的pipe道模式更改为Classic而不是集成?

这可能与打破ASP.Net 2.0应用程序的IIS7更改有关。

也许添加本地networking服务帐户到SQL上的数据库。

希望能帮助到你。