SoapUI中具有用户名和密码身份验证的SOAP请求

时间:2019-04-04 16:19:47

标签: soap soapui ws-security

我正在尝试在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设置中。

SoapUI request and response

Project setting

我尝试了先占式身份验证和“必须了解”。我还尝试更改请求标头并手动添加安全性,但似乎没有任何效果,我总是得到相同的响应。

Edited Header manually

1 个答案:

答案 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>