Пароль WSS Введите запрос на мыло, используя Citrus

Мне нужно отправить запрос на мыло для автоматизации моих тестов с использованием Citrus Framework. Но когда я отправляю запрос, он возвращает "Неверное имя пользователя или пароль"

Мыльный ответ

Я попытался отправить то же самое с помощью SoapUI, и он отлично работает, так как он передает тип пароля в виде текста через свойства.

Введите пароль в soapUI

Проблема, с которой я столкнулся, заключается в установке "Типа пароля WSS" в citrus. Я установил имя пользователя и пароль, используя документацию по цитрусовым, но не нашел способа настроить тип пароля в виде текста.

цитрус-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>

Помоги мне добиться этого. Благодарю.

1 ответ

Решение

Ваш код использует обычную аутентификацию вместо 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

Другие вопросы по тегам