我正在尝试在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设置中。
我尝试了先占式身份验证和“必须了解”。我还尝试更改请求标头并手动添加安全性,但似乎没有任何效果,我总是得到相同的响应。
答案 0 :(得分:0)
我还不能添加评论,所以我正在写作作为答案。对我来说,似乎缺少一些命名空间。尝试通过更改现时创建的字段来发出如下请求。 sample-token 可以是你想要的任何东西。如果您尝试调用的服务需要密码为纯文本,那么代码示例中的命名空间就足够了。此外,我建议您查看此 link 中的文档。
<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>