Образец Citrus-Framework Soap over SSL

Я пытаюсь использовать Citrus-framework для настройки регрессионных тестов, поскольку мы обновляем наши маршруты Talend ESB до последней версии. Наши маршруты в основном защищены Soap over SSL нашим локальным центром сертификации и требуют сертификата для авторизации. Я следил за проектом Sample-Soap и заставил его работать с временным переопределением требования сертификата. Я теряюсь, пытаясь заставить его использовать сертификат для клиентских вызовов на наш маршрут ESB. Я нашел проект sample-https на citrusframework.org, но, похоже, он создан для сервисов Rest, и мне не удалось заставить его работать с полезными нагрузками мыла.

Моя конечная цель — вызвать наш существующий маршрут, а затем вызвать последнюю версию маршрута и сравнить возвращенный XML с каким-то классным кодом, чтобы убедиться, что они идентичны.

Существует ли образец Soap over SSL, который помог бы мне понять, что я делаю неправильно в своем проекте?

Я безуспешно пытался добавить код примера-https в свой проект мыла. Ошибка, которую я получаю, - это ошибки ssl-рукопожатия, которые, как я знаю, связаны с сертификатом, поскольку я уверен, что не прикрепляю действительный сертификат к своей полезной нагрузке.


person smo    schedule 14.11.2016    source источник


Ответы (1)


Ваша конфигурация должна немного отличаться от https-образца. Вы должны установить отправителя сообщения на клиенте веб-службы Citrus SOAP:

<bean class="com.consol.citrus.samples.todolist.config.SoapClientSslConfig"/>

<citrus-ws:client id="todoClient"
                    request-url="https://localhost:8443"
                    message-sender="sslRequestMessageSender"/>

Сертификат настраивается в контексте HTTP-клиента SSL.

@Configuration
public class SoapClientSslConfig {

    @Bean
    public HttpClient httpClient() {
        try {
            SSLContext sslcontext = SSLContexts.custom()
                    .loadTrustMaterial(new ClassPathResource("keys/citrus.jks").getFile(), "secret".toCharArray(),
                            new TrustSelfSignedStrategy())
                    .build();

            SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
                    sslcontext, NoopHostnameVerifier.INSTANCE);

            return HttpClients.custom()
                    .setSSLSocketFactory(sslSocketFactory)
                    .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                    .addInterceptorFirst(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor())
                    .build();
        } catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
            throw new BeanCreationException("Failed to create http client for ssl connection", e);
        }
    }

    @Bean
    public HttpComponentsMessageSender sslRequestMessageSender() {
        return new HttpComponentsMessageSender(httpClient());
    }
}

Пример кода теперь также доступен на github: https://github.com/christophd/citrus-samples/tree/master/sample-soap-ssl

person Christoph Deppisch    schedule 17.11.2016