2016-11-15 2 views
0

Мне нужно отправить запрос на мыло для автоматизации моих тестов с использованием инфраструктуры Citrus. Но когда я отправить запрос, он возвращает «Неверное имя пользователя или пароль»WSS-Password Тип запроса на мыло с использованием Citrus

Soap response

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

Password type in soapUI

У меня есть проблема здесь настройки «Тип WSS-пароль» в citrus.I установил имя пользователя и пароль, используя документацию для цитрусовых, но я не нашел, как настроить тип пароля как текст.

цитрусовых 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

Это работает, чтобы отправить запрос. Но ошибка при получении ответа. ERROR jSecurityInterceptor | Не удалось защитить ответ: Неизвестная кодировка типа пароля: PasswordType; Вложенное исключение - org.apache.ws.security.WSSecurityException: неизвестная кодировка типа пароля: PasswordType org.springframework.ws.soap.security.wss4j.Wss4jSecuritySecurementException: неизвестная кодировка типа пароля: PasswordType; –

+0

Как-то я сделал обходной путь, установив другое свойство как . Ценю вашу помощь. Благодарю. –

Смежные вопросы