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

时间:2009-07-15 19:40:01

标签: sql-server security iis

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

  • FROM:带有IIS 6的Windows XP Pro SP3
  • TO:带有IIS 7的Vista Enterprise 64位

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

我有:

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

我使用SqlConnection的连接字符串是“Server = {SERVER_NAME}; Database = {DB_NAME}; Integrated Security = SSPI; Trusted_Connection = True;”

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

注意:SQL Server仅限Windows身份验证 - 无混合模式或仅SQL。

3 个答案:

答案 0 :(得分:2)

您需要在活动目录中设置SPN。假设您在中间服务器上的域服务帐户下运行SQL Server,则需要在域控制器上运行此链接:

setspn -A MSSQLSvc/SERVERNAME.domain.name:1433 domainname\SQLServiceAccount

为中间服务器名称(代表您访问SQL 2000框的名称)切换SERVERNAME,确保使用完全限定的域名(IE.Myserver.mycompany.local),然后使用domainname \ SQLServerAccount是您用于运行SQL服务的帐户(IE将代表您访问SQL 2000框的帐户)。

如果您想了解更多详情,请参阅MSDN文章 - http://technet.microsoft.com/en-us/library/bb735885.aspx。如果您遇到任何问题,请回复。

答案 1 :(得分:1)

假设SQL Server安装在一个单独的盒子上且位于域

您的工作站需要在Active Directory中启用委派以传递凭据(“登录令牌”)并允许模拟工作。根据您的其他步骤,这看起来就像您要做的那样,

答案 2 :(得分:0)

在SSMS中运行

EXEC master..sp_addsrvrolemember @loginame = N' NT SERVICE \ MSSQLSERVER',@ irlename = N' sysadmin'