2016-11-15 94 views
0

我需要发送肥皂请求以使用Citrus框架自动执行我的测试。但是,当我发送请求,则返回“无效的用户名或密码”使用Citrus的WSS密码输入肥皂请求

Soap response

我试图发送使用了SoapUI相同,因为它发出的密码类型,通过属性的文本,它工作正常。

Password type in soapUI

我这里的问题是设置在citrus.I了“WSS-密码键入”使用柑橘文档设置了用户名和密码,但我没有找到如何设置密码类型作为文本。

柑橘的context.xml

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/> 

    <citrus-ws:client id="todoListClient" 
         request-url="soapURL" 
message-sender="basicAuthClient"/> 

<bean id="basicAuthClient" class="org.springframework.ws.transport.http.HttpComponentsMessageSender"> 
    <property name="authScope"> 
     <bean class="org.apache.http.auth.AuthScope"> 
     <constructor-arg value="host"/> 
     <constructor-arg value="port"/> 
     <constructor-arg value=""/> 
     <constructor-arg value="basic"/> 
     </bean> 
    </property> 
    <property name="credentials"> 
    <bean class="org.apache.http.auth.UsernamePasswordCredentials"> 
     <constructor-arg value="username"/> 
     <constructor-arg value="password"/> 

    </bean> 
    </property> 
</bean> 

帮助我实现这一目标。谢谢。

回答

0

您的代码使用基本身份验证而不是WSSecurity。您必须配置客户端拦截器的WSSecurity如下:

<citrus-ws:client id="todoListClient" 
        request-url="http://localhost:8080/services/ws/todolist" 
        interceptor="wss4jSecurityInterceptor"/> 

<bean id="wss4jSecurityInterceptor" 
    class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor"> 
    <property name="securementActions" value="Timestamp UsernameToken"/> 
    <property name="securementUsername" value="admin"/> 
    <property name="securementPassword" value="secret"/> 
</bean> 

的Wss4jSecurityInterceptor类有一个名为“securementPasswordType”属性,你可以设置。

另请参阅Citrus示例项目https://github.com/christophd/citrus-samples/tree/master/sample-soap-wssecurity

+0

这可以发送请求。但在接收响应时出错。错误jSecurityInterceptor |无法确保响应:未知的密码类型编码:PasswordType;嵌套的异常是org.apache.ws.security.WSSecurityException:未知的密码类型编码:PasswordType org.springframework.ws.soap.security.wss4j.Wss4jSecuritySecurementException:未知的密码类型编码:PasswordType; –

+0

不知何故,我通过将另一个属性设置为来制定解决方法。感谢你的帮助。谢谢。 –