“用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。”到SQL Server 2005

问题描述 投票:1回答:5

我正在尝试将我们拥有的遗留应用程序迁移到Windows Server 2008 x64和IIS7。它是用Classic ASP编写的,并连接到SQL Server 2005数据库。

但是,当页面运行时,我收到错误:

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

我正在使用的连接字符串是:Driver=SQL Server; Server=SERVERNAME; Initial Catalog=DBNAME;我无法看到它使用匿名登录的任何原因,因为它在我的32位Win2k3服务器上运行时,它使用DOMAINNAME \ SERVERNAME $访问SQL Server。

我有以下设置。

SQL Server 2005 - 以混合模式运行。 IIS7应用程序池 - 允许将32位应用程序设置为True。

我还在SQL Server上添加了服务器作为用户。

我现在尝试了一些事情,我开始没有想法了。

sql-server-2005 iis-7 asp-classic windows-server-2008
5个回答
1
投票

有一些解决方案。

使用SQL身份验证,而不是SSPI。它将起作用,因为您的数据库处于混合模式。

如果由于任何原因您不会更改身份验证。

顺便说一句,NT AUTHORITY\ANONYMOUS LOGON很奇怪,就像数据库服务器和应用服务器不在同一个域上一样。请检查这一点,直到进一步提供。

1)在Active Directory中创建用户 2)在IIS7上创建一个应用程序池,并为您创建的用户“身份”创建 3)授予此用户您在DB上所需的权限和角色


1
投票

我想我已修好了。迁移到Win2k8意味着我需要将连接字符串驱动程序更改为SQL Native Client;。


1
投票

将匿名身份验证凭据设置为您的应用程序池标识。 (默认为特定用户 - > IIS用户)。然后,您可以在连接字符串中使用可信连接,因为它现在将使用AppPoolIdentity帐户。


0
投票

那么,失败的登录尝试是在“本地服务”帐户下运行的代码的典型示例,而不是(在Win2K3上有什么),它在“网络服务”帐户下运行。现在您只需要找到该设置的位置。


0
投票

对于OP或未来的读者,您可以:

1)使用专门的服务帐户,如上面的Johan所建议的那样,或者

2)使用AppPoolIdentity帐户并转到“身份验证”,然后选择“Windows身份验证”并启用“ASP .NET模拟”。

如果您在#2之后仍然得到相同的结果,那么您可能会遇到Damien引用的“双跃点”问题 - 这是Web服务器可以对您进行身份验证的地方,但它不允许您将这些凭据传递到数据库以确保安全性没有使用Kerberos的原因。然后,您需要在AD中将服务器设置为“Trusted for Delegation”,并将Kerberos设置为IIS中的身份验证提供程序。这个网站有助于:http://technet.microsoft.com/en-us/library/ee675779.aspx

© www.soinside.com 2019 - 2024. All rights reserved.