1

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

SQL Server 连接使用 SSPI 和应用程序池的用户身份完成,而不是使用登录的 Windows 域用户和 Windows Authenticated 用户。

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

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

所有服务器都在同一个域上....有什么想法吗?

谢谢

4

1 回答 1

2

这是一个“双跳”问题,即不信任服务器将客户端的凭据传递到另一个框(跳 1 是 IIS 框的凭据,跳 2 是从 IIS 框到 SQL Server )。它在直接在服务器上运行时有效,但在从远程 PC 访问时无效。更多herehere

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

  • 使 IIS 不被模拟
  • 设置池以使用网络服务帐户
  • 使用 domainName\WebServerMachineName$ 在您的数据库服务器中创建一个登录帐户并授予权限

更多操作方法:在 ASP.NET 2.0 中使用 Windows 身份验证连接到 SQL Server

如果你仍然需要模仿

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

于 2014-05-08T18:03:46.433 回答