为所有请求设置HTTP基本身份验证

49

是否有一种方法可以为SoapUI项目中的所有请求设置HTTP基本身份验证?

我知道可以为测试套件内的所有请求设置它,但我无法弄清如何为所有测试套件中的所有请求设置它。


你不通过 Web 服务器配置设置 HTTP 基本身份验证有什么特别的原因吗? - Oswald
1
服务器已启用身份验证 - 我无法使用SoapUI作为客户端进行身份验证。但是,我必须为每个请求/测试套件单独设置身份验证,每次都要这样做。我希望能够一次性为项目中的所有请求设置身份验证。 - DisscCoder
4个回答

74
在SOAPUI 5.0或更高版本中,您可以从左侧导航窗口(我认为是接口)的basicHttpBinding上设置它(它是所有方法的父级且直接是项目的子级)。右键单击接口名称并选择"显示接口查看器"。然后转到"服务端点"选项卡,在那里放置您的身份验证信息。现在,您不必为服务中的每个方法指定身份验证。输入凭据后,您需要将其分配给您的请求(选项卡下方的"分配"按钮)。

6
这是最简单的答案。谢谢!我不知道为什么SoapUI里面这个不太明显... - Tim
2
有人能确认这个方法适用于REST项目/终端吗?如果我在这里放置授权信息,我会得到一个ClientProtocolException异常,而如果我将同样的授权信息添加到每个请求消息中,它可以正常工作。 - dbreaux
1
我正在使用它来访问Redmine REST API,而且它有效。在导航窗格中,右键单击服务节点(其中包含服务的URL),选择“显示服务查看器”。在服务查看器中,选择“服务端点”选项卡并填写用户名和密码字段。我不确定“模式”,但我正在使用COMPLEMENT。之后,对于每个请求,选择“Auth”选项卡并指定“Basic”。让用户名和密码字段为空。单击“预先强制认证”以强制身份验证标头(无需等待服务器发出挑战)。 - jramos
6
实际上,它并没有在所有请求中放置认证。即使您已经在HTTP属性中配置了预先授权,仍然需要逐个检查所有请求并在认证选项卡中启用认证。这样做几乎毫无意义。 - Keith Tyler
1
只是一个小提示:对我来说,上下文菜单项称为“显示服务查看器”,而不是“显示接口查看器”(v5.3.0 osx)。 - João Matos
显示剩余4条评论

9
有几种方法可以实现此操作:
  1. 在端点级别设置凭据。当然,这将用于使用该端点的所有测试步骤。

  2. 在测试用例级别设置凭据(单击钥匙图标)。凭据向下传播到每个测试步骤。

  3. 使用自定义项目属性存储凭据,然后在每个测试步骤的身份验证选项卡中使用属性扩展来获取您的自定义属性(用户名/密码) http://www.soapui.org/Scripting-Properties/working-with-properties.html
    http://www.soapui.org/Scripting-Properties/property-expansion.html


2
第一步怎么做?你如何直接将凭据添加到端点? - goku_da_master
2
2和3只在测试套件中有效,而不在服务定义中的请求对象中有效。如果没有进入每个方法并配置身份验证,1就无法工作。将其放在端点定义中几乎毫无意义,因为您仍然必须在每个方法中激活它。我不知道为什么它没有一种机制来始终执行身份验证(如果提供了身份验证凭据),但我相信SB公司没有人真正使用他们自己的产品。 - Keith Tyler

0
在ReadyAPI(SOAP UI Pro)版本2.2.0中:
在“项目”选项卡中,上部分有一个“认证管理器”。
在该管理器中,在“认证存储库”选项卡中创建一个带有正确的“用户名”和“密码”的身份验证配置文件。将“域”留空并设置“预先认证”。
在“认证管理器”选项卡中,选择要应用凭据的必需上级(我使用了最高的一级),并在“授权方法”列中选择您的配置文件。在“扩展到子请求”中选择 “是”,所有请求都应转换为“从父级继承”的状态。
当您从项目生成 TestSuite 时,所有请求都将从父级继承并应用您在配置文件中设置的凭据。

0
如果您在soapUI中使用rest服务,请按照goku_da_master的描述执行以下操作:

右键单击服务名称,选择“显示服务查看器”。然后转到“服务端点”选项卡。在那里输入您的身份验证信息。

由于我找不到一种批量应用这些设置到所有请求的方法,最简单的解决方法是将设置应用于1个请求,保存项目(作为xml),并在代码编辑器中进行简单的查找替换

打开一个随机的请求1,在请求选项卡中单击左下角的Auth按钮。在Authorization:中选择“添加新授权...”,然后选择基本。也许您还需要启用允许预先设置。现在可以测试此请求。

现在保存项目并使用您的代码编辑器打开它,我使用vsCode因为它允许多行查找替换并具有xml格式化功能(或插件)。所以我的查找和替换看起来像这样:

                <con:credentials>
                    <con:username>***</con:username>
                    <con:password>******</con:password>
                    <con:domain xsi:nil="true"/>
                </con:credentials>
------------------------------------------------------------------------
                <con:credentials>
                    <con:username>***</con:username>
                    <con:password>******</con:password>
                    <con:domain xsi:nil="true"/>
                    <con:selectedAuthProfile>Basic</con:selectedAuthProfile>
                    <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
                    <con:preemptive>true</con:preemptive>
                    <con:authType>Preemptive</con:authType>
                </con:credentials>

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