我们正在使用带有 IIS 8.5 的 Windows 2012 将旧应用程序移动到新环境,并且遇到了以下错误:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Could not find a login matching the name provided. [CLIENT: 10.107.23.103]
这似乎很常见。我在网上读到的所有地方都提到了“双跳”错误。但是,据我所知,使用委托只会使用客户端的凭据连接到数据库,而不会使用运行应用程序池的域帐户(即有权访问数据库的帐户)。
我也读过这篇文章(https://www.mssqltips.com/sqlservertip/2312/understanding-when-sql-server-kerberos-delegation-is-needed/),其中提到,此场景不需要 Kerberos 委派:
“用户连接到不同系统上的网站或应用程序,并使用 Windows 域帐户(非用户帐户)或 SQL Server 登录名连接到 SQL Server。”
这看起来就像我想要实现的目标。
IIS 服务器上是否存在任何配置错误,导致应用程序在尝试连接到 SQL Server 时失败?
答案1
我刚刚找到了解决方案。该问题与以下情况有关:
<identity impersonate="true" />
在 web.config 上。将其设置为“false”解决了该问题。
答案2
看起来您需要在另一个帐户下运行应用程序池,例如“网络服务”。然后您需要为帐户“domain\iis-server-name$”授予对 MS SQL 的访问权限。
并且您可能需要在 IIS(或站点)设置中启用“Windows 身份验证”。