SOAP-UI - 如何在项目中外部化或加密密码

SOAP-UI - how to externalize or encrypt passwords in a project

我有一个项目,其中配置了一些 SOAP 接口来测试我的后端。

为了能够转移凭据,我可以选择:

  1. 放一个soap header <soapenv:Header>...</soapenv:Header>包含用户名和密码 但在这种情况下,我必须在所有请求中声明它并且它不是动态的,因为配置的不同端点(环境)的凭据会发生变化

  2. 为我的所有环境创建一个 Outgoing WS-Security Configurations 并将它们关联到每个 Interface
    Endpoint 配置中 这样,无论使用什么端点,它都可以轻松自动地切换凭据。 在这个配置中我也可以定义不生成一个nonce,其他方式它自动生成它并且服务器不接受它。

现在我有一个安全问题。我的 SOAP-UI 在 git 存储库中,如果我打开项目 xml 文件,我可以看到我的明文密码。

我尝试使用 Hashed password 但是:

  1. 服务器不允许这样做:它需要 PasswordText 格式的密码
  2. 我认为哈希是 base64 编码的,因此不安全

有什么方法可以将密码外部化(可以存储在本地明文文件中)或在 project.xml 文件中加密?

我在 5.2.0 版和用户界面中使用 SOAP-UI 开源版本(非专业版),而不是 Maven 或任何其他工具。

您可以使用全局属性。为此,您首先需要定义一个外部文件,例如一个名为 soapuiProperties.txt.

的文件

在此文件中放入两个属性:

myProject.username=yourUserName
myProject.password=yourPassword

然后配置您的 WS-Security 配置设置并将 ${myProject.username} 设置为用户名,将 ${myProject.password} 设置为密码(您看不到密码文本,因为 UI 字段有一个mask 但不用担心,如果你正确地放置了 属性 然后 SOAPUI 将它替换为 属性 文件中的正确值)。

最后,您必须将文件传递给 SOAPUI,因此编辑 SOAPUI_HOME\bin\soapui.bat 并将以下 -Dsoapui.properties=soapuiProperties.txt 添加到 JAVA_OPTS:

set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx256m -Dsoapui.properties=soapuiProperties.txt

就是这样,当您将 WSSSettings 应用于您的请求时,您会看到从 属性 文件中获取的正确值。

您可以在 SOAPUI 文档中查看更多信息 here

编辑

在新版本中至少 5.2.1 似乎更容易,默认情况下 SOAPUI 被配置为默认加载 SOAPUI_HOME\bin\soapui.properties。因此,创建此文件并在此处添加属性,您必须执行其余步骤,但可以避免编辑 soapui.bat.

希望这对您有所帮助,