使用SoapUI和Windows身份验证测试Web服务

Hen*_*sel 45 testing user-interface soap web-services soapui

是否可以包含Windows域凭据以使用SOAP UI测试我的Web服务?

我找到了一个属性页面,但IIS只响应"错误的凭据".

小智 58

SoapUI似乎不能直接使用NTLM身份验证,但您可以使用Burp Suite等代理为您执行身份验证.

  1. http://portswigger.net/burp/下载Burp Suite 并启动它.
  2. 在Burp的"Proxy:Intercept"选项卡上,单击按钮以关闭拦截.
  3. 在Burp的"代理:选项"选项卡上,确保将其设置为未使用的端口,默认为8081
  4. 在Burp的"选项"选项卡上,勾选"执行www身份验证"并为您要访问的服务器添加设置.同时勾选"提示身份验证失败的凭据"
  5. 切换到Burp的"代理:历史记录"选项卡,以便您可以查看请求.
  6. 在SoapUI中,选择"文件">"首选项",然后选择"代理设置".输入主机"localhost"和端口"8081".
  7. 像往常一样使用SoapUI.它将通过Burp Proxy发送请求,Burp Proxy将为您执行NTLM身份验证.

  • 我的情况略有不同,因为我的代理服务器需要NTLM v2身份验证(HTTP响应代码407)而不是Web服务器.使用Burp与"上游代理服务器"设置而不是步骤4中的"执行www身份验证"为我工作. (2认同)

小智 12

soapUI 4.5刚刚添加了对NTLMv2的支持,无需使用Burp Suite.

  • NTLM在SoapUI 5.3.0中为我工作.必须在SoapUI首选项的"HTTP设置"选项卡中启用"向传出请求添加身份验证信息"选项.它默认是禁用的.然后,您必须在请求中指定用户名/密码. (3认同)

kip*_*ney 6

接受的解决方案适用于大多数情况.但是,如果服务使用委派来访问其他服务器上的资源,则会遇到Burp代理使用的NTLM身份验证的双跃点问题.代理将成功对服务进行身份验证,但服务使用委派对其他资源进行的后续调用将失败.

本文详细介绍了该问题:

http://blogs.msdn.com/b/besidethepoint/archive/2010/05/09/double-hop-authentication-why-ntlm-fails-and-kerberos-works.aspx

我找到的最简单的解决方法是使用Fiddler作为代理.在Fiddler的规则菜单上,选择"自动验证".然后更新您的SoapUI首选项以使用fiddler作为代理(默认位置是localhost:8888).现在,您的呼叫将包含在可以委派的凭证中.

如果使用LoadUI执行SoapUI测试用例,SoapUI测试运行器将使用您的SoapUI代理设置,您的调用将继续工作.