案例 1. 当我从我自己的 PC 上浏览一个名为 JOHNXP 的小测试站点(例如http://localhost/WebClient)时,我的 .aspx 页面调用我的 ASMX 网络服务获取我的凭据并将它们传递给另一台机器上的另一个网络服务( SERVERTRIM)在同一域中。我可以看到我的请求导致 SERVERTRIM 机器上的安全日志条目带有我的凭据。
案例 2。我移动到同一域中的另一台 PC,并使用我在个人桌面上使用的相同凭据登录。当我浏览上面的同一个测试站点时(这次是http://johnxp/WebClient),我得到这个渗透回我的 .aspx 页面:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> System.Net.WebException:请求失败,HTTP 状态 401:未授权
查看 SERVERTRIM 上的安全日志,我注意到案例 2 中的访问导致匿名登录,这似乎可以解释 401/未授权。
当我的 WS 在不同的服务器上调用供应商的 web 服务时,我试图让我的 web 服务使用登录的 DOMAIN 用户的凭据。
我的 ASMX 网络服务在我的桌面上运行(IIS 5.1 WinXP Pro - 机器名称是 JOHNXP)。我在涉及的每个服务器中都启用了匿名 UNCHECKED,并且在我的场景中涉及的每个 web.config 中都有这个:
供应商 Web 服务在 SERVERTRIM(Win 2003 服务器)上运行,它也是 ASMX 并使用 WSE 3.0。
Wireshark 和 Netmon 现在对于我来说看起来太强大了。我认为“远程”服务器(SERVERTRIM)上不同的结果登录是足够的“证据”。上面的所有机器都在同一个域中,但如果可能的话,我想将“远程”webservice 保留在 SERVERTRIM 上,并将我的中间 webservice 保留在同一域中的不同服务器上。这种情况是否要求我必须深入研究“委托”?当在域中的另一台机器上发起 Web 请求时,监视为什么相同的凭据会导致匿名登录的最简单工具是什么?