我有一个仅使用Window Authentication&Impersonation访问的ASP.NET(4.0)站点(Anoymous Disabled) .
SQL Server连接使用SSPI完成,并使用应用程序池的用户标识,而不是使用登录的Windows域用户和Windows Authenticated用户 .
从IIS Web服务器本地访问网站时,一切正常 .
从远程PC访问时,即使使用相同的域用户,也会失败 .
并且所有服务器都在同一个域......任何想法?
谢谢
我有一个仅使用Window Authentication&Impersonation访问的ASP.NET(4.0)站点(Anoymous Disabled) .
SQL Server连接使用SSPI完成,并使用应用程序池的用户标识,而不是使用登录的Windows域用户和Windows Authenticated用户 .
从IIS Web服务器本地访问网站时,一切正常 .
从远程PC访问时,即使使用相同的域用户,也会失败 .
并且所有服务器都在同一个域......任何想法?
谢谢
1 回答
这是一个"double-hop"问题,服务器不被信任将客户端的凭据传递到另一个框(第1跳是IIS框的凭据,第2跳是从IIS框到SQL Server) . 它在直接在服务器上运行时起作用,但在从远程PC访问时不起作用 . 更多here和here
取决于您可能需要Windows身份验证的要求,而不是SQL Server上的模拟 . 在SQL Server上进行模拟意味着对于每个用户,您需要在数据库中拥有帐户/权限 . 如果不是这种情况,您只需要一个安全的身份验证(没有在web.config中硬编码用户名和密码),那么您可以执行以下操作
使IIS不会被冒充
设置池以使用网络服务帐户
使用domainName \ WebServerMachineName $和授予权限在数据库服务器中创建登录帐户
更多How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0
如果你仍然需要冒充而不是