在我的计算机(win server 2003)上,我有一个 ASP.Net web 应用程序,它调用另一台服务器(也是 win 2003 服务器)上的 ASP.Net web 服务。该 web 应用程序设置为模拟并使用 windows 身份验证。该 web 服务设置为需要 windows 身份验证。通过 web.config 中的配置将 asmx 文件限制为特定的 Active Directory 组。
Web 应用程序调用 Web 服务并传递默认凭据。当我的计算机上同时存在 Web 应用程序和 Web 服务时,这一切都可以正常工作,但是当我将 Web 服务移至单独的服务器时,我收到 401,并且 IIS 日志不显示用户,这意味着凭据未正确传递。
我是否需要配置其他内容以允许将凭据从我的 Web 应用程序传递到其他服务器?
答案1
对于 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