远程访问时,ASP.NET站点失败,'NT AUTHORITY\ANONYMOUS LOGON' . 使用应用程序池的域用户访问SQL Server

我有一个仅使用Window Authentication&Impersonation访问的ASP.NET(4.0)站点(Anoymous Disabled) .

SQL Server连接使用SSPI完成,并使用应用程序池的用户标识,而不是使用登录的Windows域用户和Windows Authenticated用户 .

从IIS Web服务器本地访问网站时,一切正常 .

从远程PC访问时,即使使用相同的域用户,也会失败 .

并且所有服务器都在同一个域......任何想法?

谢谢

回答(1)

2 years ago

这是一个"double-hop"问题,服务器不被信任将客户端的凭据传递到另一个框(第1跳是IIS框的凭据,第2跳是从IIS框到SQL Server) . 它在直接在服务器上运行时起作用,但在从远程PC访问时不起作用 . 更多herehere

取决于您可能需要Windows身份验证的要求,而不是SQL Server上的模拟 . 在SQL Server上进行模拟意味着对于每个用户,您需要在数据库中拥有帐户/权限 . 如果不是这种情况,您只需要一个安全的身份验证(没有在web.config中硬编码用户名和密码),那么您可以执行以下操作

  • 使IIS不会被冒充

  • 设置池以使用网络服务帐户

  • 使用domainName \ WebServerMachineName $和授予权限在数据库服务器中创建登录帐户

更多How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0

如果你仍然需要冒充而不是

确保您的应用程序服务器设置为Trusted for Delegation . 在IIS中确保禁用匿名身份验证并启用Windows身份验证,如果使用Windows 2008,也启用ASP.Net模拟 . 如果使用Windows 2008并且您的应用程序池在网络服务下运行,则转到Windows身份验证的高级设置并关闭内核模式 . 将yourDomain \ yourAppServer $设置为对ASP.Net应用程序文件夹具有读取权限 . [资源]