我有一个配置了一些SOAP接口以测试后端的项目。
为了能够传输凭据,我可以选择:
放置一个包含用户名和密码的soap标头<soapenv:Header>...</soapenv:Header>
但是在这种情况下,我必须在所有Request中声明它,并且由于配置的不同终结点(环境)的凭据更改,它不是动态的
为我的所有环境创建一个Outgoing WS-Security Configurations
并将它们与每个Endpoint
的Interface
配置相关联
这样,无论使用哪种端点,它都可以轻松,自动地切换凭据。
在此配置中,我还可以定义不生成nonce
,也可以使用其他方式自动生成Hashed password
,而服务器不接受它。
现在我有一个小安全性问题。我的SOAP-UI在git存储库中,如果我只是打开项目xml文件,则可以看到明文密码。
我尝试使用PasswordText
但:
服务器不允许这样做:它需要格式的密码
我认为哈希是base64编码的,然后不安全
有什么方法可以将密码外部化(可以将其存储在本地纯文本文件中)或将其加密在project.xml文件中吗?
我正在版本5.2.0中以及从用户界面使用SOAP-UI开源版本(非PRO),而不是通过Maven或任何其他工具使用。
最佳答案
您可以使用全局属性。为此,您需要首先定义一个外部文件,例如一个名为soapuiProperties.txt的文件。
在此文件中放入两个属性:
myProject.username=yourUserName
myProject.password=yourPassword
然后配置您的WS-Security配置设置,并将
${myProject.username}
设置为用户名,将${myProject.password}
设置为密码(您不会看到密码文本,因为UI字段带有掩码,但是不用担心如果正确放置了属性, 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
。希望这可以帮助,