在我的机器(win server 2003)上,我有一个 ASP.Net web 应用程序,它在不同的服务器(也是 win 2003 服务器)上调用 ASP.Net web 服务。Web 应用程序设置为模拟和使用 Windows 身份验证。Web 服务设置为需要 Windows 身份验证。通过 web.config 中的配置,asmx 文件被限制在特定的 Active Directory 组中。
Web 应用程序调用 Web 服务并传递默认凭据。当 Web App 和 Web 服务都在我的机器上时,这一切都有效,但是当我将 Web 服务移动到单独的服务器时,我得到一个 401,并且 IIS 日志没有显示用户,这意味着凭据没有被传递适当地。
我还需要配置其他东西以允许将凭据从我的 Web 应用程序传递到另一台服务器吗?
对于 ASP.NET 应用程序,如果您设置 impersonation="true" 那么它将在经过身份验证的用户下运行“大多数”事情。因此,如果您在 Web 应用程序上提示输入用户名/密码,如果启用了模拟,这些凭据将传递给 Web 服务。
但是,您将遇到所谓的“双跳问题”。Windows 身份验证故意不允许凭据通过这样的 2 个跃点。这是一篇涵盖可能解决方案的博客文章: http ://weblogs.asp.net/owscott/archive/2008/08/22/iis-windows-authentication-and-the-double-hop-issue.aspx