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

47

能否在SOAP UI中使用Windows域凭据测试我的Web服务?

我找到了一个属性页面,但是IIS返回“错误的凭据”。


1
soapUI原生支持NTLMv1,但由于许多新的基于NTLM的安装需要NTLMv2,因此这是一个很好的解决方法,感谢您的发布!/Ole eviware.com - olensmar
1
BurpSuite Pro版本有“执行www身份验证”的区域,而免费版本没有。 :( - user352421
5个回答

58

SoapUI似乎不直接支持NTLM身份验证,但可以使用代理工具(例如Burp Suite)来进行身份验证。

  1. http://portswigger.net/burp/下载Burp Suite并启动它。
  2. 在Burp的“Proxy:Intercept”选项卡上,点击按钮关闭拦截功能。
  3. 在Burp的“Proxy:Options”选项卡上,确保设置为未使用的端口,默认为8081。
  4. 在Burp的“Options”选项卡上,勾选“do www authentication”,然后添加要访问的服务器设置。此外,还要勾选“prompt for credentials on authentication failure”。
  5. 切换到Burp的“Proxy:History”选项卡,以便查看请求的传输情况。
  6. 在SoapUI中,选择“File > Preferences”,然后选择“Proxy Settings”。输入主机名“localhost”和端口号“8081”。
  7. 正常使用SoapUI,它将通过Burp代理发送请求,并为您执行NTLM身份验证。

1
Burp 的当前版本中没有“通信”选项卡。 - Pedro Rolo
2
我的情况略有不同,因为我的代理服务器需要NTLM v2身份验证(HTTP响应代码407),而不是Web服务器。在第4步中,使用Burp的“上游代理服务器”设置而不是“进行www身份验证”对我有用。 - Martin Hollingsworth
太棒了,Mike,谢谢!只要您使用HTTP 1.1,Charles代理软件也可以做到这一点。只需配置SoapUI代理设置指向Charles并将NTLM凭据提供给它(SoapUI)即可。 - John Berberich
在新的Burp v1.7.21中,您需要在“项目选项”选项卡下勾选“覆盖用户选项”,并在那里提供服务器设置,其余步骤如解决方案所述。这个方法非常有效。谢谢。 - Abraham Roy
无法使SoapUI 5.3.0正确处理NTLM。但是使用BurpSuite可以! - mcanti
显示剩余2条评论

13

soapUI 4.5 刚刚增加了对 NTLMv2 的支持,这消除了使用 Burp Suite 的必要性。


1
即使使用最新版本的SoapUI/LoadUI 4.5.1,仍然无法正常工作 - 使用BurpSuite才成功了... - Leon
1
下载夜间构建版本,请查看我的回复。 - Fanda
1
我甚至无法在SoapUI 5.0.0中使其工作。 SoapUI发送了NTLM头,但似乎是错误的,因为我收到了所有401错误。 - Patrick Szalapski
5
NTLM 在 SoapUI 5.3.0 中可行。 需要在 SoapUI 首选项的 "HTTP 设置" 选项卡中启用 "向外部请求添加认证信息" 选项,该选项默认处于禁用状态。 接着,在你的请求中必须指定用户名和密码。 - Sergey Enns
我不想明确设置凭证,因为 Soap UI 将这些凭证以明文形式保存在 XML 中。这是不可接受的。- Atul - Atul Sureka
显示剩余3条评论

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代理设置,并且您的调用将继续工作。

“自动验证”在哪里?我在规则菜单中没有看到它。我正在使用Fiddler 4.4.7.1版本。 - Patrick Szalapski
我使用的是4.4.9.2版本,在我的“规则”菜单中它是从底部开始数的第三项。我不确定在早期版本中它在哪里。 - kiprainey
我尝试过了,但对我没有用。我可以看到Fiddler捕获了流量并发送了几个请求,因为它得到了401。但最终响应仍然是200。 - Atul Sureka
我可以确认这个解决方案是可行的,因为在阅读本文之前我已经尝试过了。现在我正在寻找更直接的解决方案。 - Gajotres

1

1

当前版本的SoapUI 4.5.1不支持Windows身份验证,但夜间构建版本可以正常运行。

下载夜间构建版本


我正在运行SoapUI 5.7.0,但它对我来说无效。 - Shiv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接