我在Windows Server 2003 IIS服务器上安装了.net Web应用程序,在应用程序池中作为NETWORK SERVICE
运行,并使用集成安全性连接到另一台计算机上的SQL Server。 SQL Server计算机也运行Windows Server 2003.因此,Web应用程序以身份DOMAIN\COMPUTER$
连接,并且该帐户在SQL Server中具有login名和用户,所以一切正常。
我还在连接到同一台SQL Server计算机的同一个IIS服务器上安装了一个.net Windows服务。 Windows服务作为LOCAL SYSTEM
运行,因此也应该以身份DOMAIN\COMPUTER$
。 我已经在十几个不同的公司安装了同样的产品,通常所有的工作都是我所期望的,但是在最近的情况下,Windows服务无法连接到数据库,出现这样的错误:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
任何想法,为什么这将是本地系统的情况下,而不是networking服务? 要在短期内解决这个问题,我必须切换到使用SQL Serverlogin,但如果有一个简单的解决scheme,则宁愿使用集成安全性。 安全或系统事件日志中没有错误消息,但我没有做任何事情来启用额外的日志logging。
通常我会认为这是某种Kerberos / ADtypes的问题,并按照这样的文章, 这将有所帮助。 但是,从networking服务工作的事实表明,我会检查正常的事情已经确定(例如SPNs已经正确设置,机器域帐户启用委派?)。 那么是什么情况出错?
如果没有我的客户的IT团队的帮助,我无法访问服务器,并且在服务器上安装了其他应用程序,我需要注意不要中断,这使得故障排除更加微妙。 任何疑难解答build议非常感谢!
您可能需要确认安全连接是NTLM还是Kerberos。 如果它恢复到NTLM,连接将是匿名的。
有一个组策略可以在使用NTLM时使用计算机标识。
networking安全:允许本地系统为NTLM使用计算机标识
http://technet.microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx
有关如何configurationSPN以便于SQL Server的Kerberos身份validation的更多信息,请执行以下操作:
特别要注意以下几点:
SQL Server的SPN由以下元素组成:
端口:这是服务正在监听的端口号。
例如:MSSQLSvc / myserver.corp.mycomany.com:1433
我仍然打赌SPN问题。 不要只假定他们在那里。 检查SQL Server的SPN是否正确注册。 同时检查重复项( setspn -x
)。
Network Service
工作,因为当SPN不在那里,它仍然可以回落到NTLM身份validation。
Local System
不起作用,因为它只能访问networking资源,如DOMAIN\Computer$
如果它能够使用Kerberos。 否则,它会回到空会话,这就是为什么你看到Anonymous Logon
。