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

问题描述 投票:0回答:2

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

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

  1. 放置包含用户名和密码的肥皂头

    <soapenv:Header>...</soapenv:Header>
    但在这种情况下,我必须在所有请求中声明它,并且它不是动态的,因为配置的不同端点(环境)的凭据会发生变化

  2. 为我的所有环境创建一个

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

现在我遇到了安全问题。我的 SOAP-UI 位于 git 存储库中,如果我只是打开项目 xml 文件,我可以以明文形式看到我的密码。

我尝试使用

Hashed password
但是:

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

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

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

soapui password-protection
2个回答
8
投票

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

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

myProject.username=yourUserName
myProject.password=yourPassword

然后配置您的 WS-Security 配置设置并将

${myProject.username}
设置为用户名,并将
${myProject.password}
设置为密码(您看不到密码文本,因为 UI 字段有一个掩码,但如果您正确输入了属性,则不用担心然后 SOAPUI 将其替换为属性文件中的正确值)。

enter image description here

最后,您必须将文件传递到 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 文档此处

查看更多信息

编辑

在新版本中,至少 5.2.1 似乎更容易,默认情况下 SOAPUI 配置为默认加载

SOAPUI_HOME\bin\soapui.properties
。因此,创建此文件并在此处添加属性,您必须执行其余步骤,但可以避免编辑
soapui.bat

希望这有帮助,


0
投票

从soapUI 5.6.0开始,有启用项目文件加密的功能。

项目属性中的“项目密码”选项可以让您轻松加密项目文件的全部内容;

Project encryption is trivial

(保存项目时,项目图标会带有一个小“E”,表示已加密)

打开已设置密码保存的项目时,SoapUI 会提示解密该项目后再使用。

Prompt for password during project opening

要删除加密,只需清除项目密码并保存项目即可。

警告!不要丢失您的密码;如果密码丢失,则无法恢复加密的项目文件。

更多详细信息 - https://stackoverflow.com/questions/33297503/soap-ui-how-to-externalize-or-encrypt-passwords-in-a-project

© www.soinside.com 2019 - 2024. All rights reserved.