我正在尝试在 SoapUI 中发出 SOAP 请求,该请求需要使用用户名和密码进行身份验证。我让 SoapUI 基于 wsdl 文件生成测试并尝试调用该服务。我按照 SoapUI 网站上的步骤使用身份验证(https://www.soapui.org/soap-and-wsdl/authenticating-soap-requests.html),但我无法让它工作。我是 SOAP 新手,所以我可能缺少一些基本的东西。我获得了该服务的用户名和密码,所以我猜这是一个基本的身份验证。但是当我尝试发出请求时,我总是收到一个 PolicyViolationException,其中指出“尚未提供所需的策略:{http://docs.oasis-open.org/ns/opencsa/sca/200912}clientAuthentication” ”.
这是请求和答案的样子(我遮盖了服务链接并更改了用户名)。我还将用户添加到我的项目和 WS-Security 设置中。
我尝试了先发制人的身份验证和“必须理解”。我还尝试更改请求标头并手动添加安全性,但似乎没有任何效果,而且我总是得到相同的响应。
我还不能添加评论,所以我写的是答案。对我来说,似乎缺少一些名称空间。尝试通过更改随机数、创建的字段来发出如下请求。样本令牌可以是您想要的任何内容。如果您尝试调用的服务需要纯文本形式的密码,那么代码示例中的命名空间就足够了。我还建议您查看此链接中的文档。
<soap:Header>
<Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="sample-token"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>user</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
<wsse:Nonce>some-base64</wsse:Nonce>
<wsu:Created>yyyy-MM-ddThh:mm:ssZ</wsu:Created>
</wsse:UsernameToken>
</Security>
</soap:Header>