SQL 集成安全性在 ASP.NET 上成功,但在经典 asp 上失败

SQL Integrated Security Succeeds with ASP.NET, but fails with classic asp

在 IIS 8.5 上,我启用的唯一身份验证方法是 Windows 身份验证,使用协商和 NTLM。当我在任何 ASP.NET 应用程序中使用连接字符串时,运行 在身份为域帐户的应用程序池下,我能够正常连接。在经典 asp 中,我得到:

 Microsoft OLE DB Provider for SQL Server error '80040e4d' 

 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

据我所知,服务器没有配置委派,我也没有明确设置 SPN。我正在通过 netbiosname.mydomain.com 的 FQDN 访问该框。

为什么它在 ASP.NET 中有效,但在经典 asp 中失败?我正在经历双跳吗?有没有办法确认它实际上是双跳?

这是我遇到的错误:

 Microsoft OLE DB Provider for SQL Server error '80040e4d' 

 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

我想您需要将经典 asp IIS 网站设置为 运行 作为您用于集成安全的域帐户。

我找到了解决这个问题的方法,我相信最后一步是唯一有帮助的,但我是这样做的:

  1. 禁用除 Windows 身份验证之外的所有身份验证方法
  2. 在 IIS 管理器中,我使用 "Convert to Application" 选项来标记 包含作为应用程序的经典 asp 代码的文件夹
  3. 已将应用程序分配到 AD 帐户下的应用程序池 运行,可以访问 SQL 服务器
  4. 在应用程序池上启用 32 位应用程序支持
  5. 将应用程序池的管道模式设置为集成
  6. 此时我仍然遇到同样的错误
  7. 我右键单击应用程序并将物理路径凭据设置为运行应用程序池的同一域帐户,一切都开始正常工作

要ASP连接数据库,在IIS 6中,目录安全->身份验证方法,在启用匿名访问下,我将匿名访问帐户设置为具有数据库权限的AD帐户。

我有一阵子头发都乱了。然后我尝试创建一个 windows 用户帐户,在 SQL 服务器中具有适当的权限,并在连接字符串中使用 "Integrated Security=SSPI"。它就像一个魅力 - 不需要广告:

SQLconnex = "PROVIDER=SQLOLEDB;DATA SOURCE={server};DATABASE={db};UID={uid};PWD={pwd};Integrated Security=SSPI"

希望它能帮到你,拯救你的头发。

在我的案例中,为了解决这个问题,我设置了“匿名身份验证”使用“应用程序池身份”。

站点 > 身份验证 > 匿名身份验证 > 编辑 > 应用程序池身份