0

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

肥皂反应

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

在soapUI中输入密码

我在这里遇到的问题是在 citrus 中设置“WSS 密码类型”。我已经使用 citrus 文档设置了用户名和密码,但我没有找到如何将密码类型设置为文本。

柑橘上下文.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>

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

4

1 回答 1

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

于 2016-11-16T19:29:53.713 回答