模拟在工作站A和B上使用相同凭据进行授权失败

时间:2009-04-22 20:24:49

标签: web-services authorization asmx impersonation

案例1.当我从我自己的PC上浏览一个名为JOHNXP的小测试站点(例如http://localhost/WebClient)时,我的.aspx页面调用我的ASMX webservice获取我的凭据并将它们传递给另一台机器上的另一个Web服务(SERVERTRIM)在同一个域中。我可以看到我的请求导致SERVERTRIM计算机上的安全日志条目带有我的凭据。

案例2.我移动到同一域中的另一台PC,并使用我在个人桌面上使用的相同凭据登录。当我浏览上面的同一个测试网站时(这次是http://johnxp/WebClient),我将这个渗透回到我的.aspx页面:

System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.Net.WebException:请求失败,HTTP状态为401:未授权

查看SERVERTRIM上的安全日志,我注意到案例2中的访问导致了ANONYMOUS LOGON,这似乎解释了401 / Unauthorized。

当我的WS在另一台服务器上调用供应商的Web服务时,我正试图让我的web服务使用登录的DOMAIN用户的凭据。

我的ASMX webservice在我的桌面上运行(IIS 5.1 WinXP Pro - 机器名称为JOHNXP)。我在每个涉及的服务器中都启用了匿名UNCHECKED,我在我的场景中涉及的每个web.config中都有这个:       
      

供应商webservice在SERVERTRIM(Win 2003 Server)上运行,它也是ASMX并使用WSE 3.0。

Wireshark和Netmon现在看起来太强大了。我正在计算“远程”服务器(SERVERTRIM)上的不同结果LOGON是足够的“证据”。上面的所有计算机都在同一个域中,但我希望将SERVERTRIM上的“远程”Web服务和我的中间Web服务保留在同一域中的不同服务器上(如果可能)。这种情况是否要求我必须深入研究“授权”?当在域中的另一台计算机上启动Web请求时,监视相同凭据导致ANONYMOUS LOGON的原因的最简单工具是什么?

1 个答案:

答案 0 :(得分:0)

我对身份验证的了解有点模糊,但如果我理解了您的描述:

  • 在第一种情况下,您正在浏览localhost,它冒充调用者,然后在另一台机器上调用Web服务。模拟与客户端在同一台机器上进行。我相信在这种情况下,模拟应用程序不需要在受委托信任的计算机上(因为它已经是与客户端相同的计算机)。

  • 在第二种情况下,您正在浏览不同的 PC,它试图在呼叫第三台PC时模拟呼叫者。在这种情况下,中间的PC需要被委托进行委托(如果它是开发工作站,则可能不会这样)。