diff options
author | 2018-11-06 12:22:28 +0100 | |
---|---|---|
committer | 2018-11-06 13:14:46 +0100 | |
commit | 8a762124d24555d50ce7455398ca3ac02fde1076 (patch) | |
tree | d31fc5feb13438a364e74fc8b4f2d4e9f39f4be7 /prh-dmaap-client/src/main | |
parent | 8330d0e6c2cf1d9d8215e13b928530c2277fa974 (diff) |
SSL setup for dmaap consumer
Change-Id: I5856554fa05cfd9ad637c0491eb801f9937c967a
Issue-ID: DCAEGEN2-951
Signed-off-by: piotr.karas <piotr.karas@nokia.com>
Diffstat (limited to 'prh-dmaap-client/src/main')
-rw-r--r-- | prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ConsumerReactiveHttpClientFactory.java | 11 | ||||
-rw-r--r-- | prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClientFactory.java (renamed from prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClient.java) | 42 | ||||
-rw-r--r-- | prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/producer/DMaaPPublisherReactiveHttpClient.java | 4 |
3 files changed, 48 insertions, 9 deletions
diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ConsumerReactiveHttpClientFactory.java b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ConsumerReactiveHttpClientFactory.java index 951e0b0b..a80f1346 100644 --- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ConsumerReactiveHttpClientFactory.java +++ b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ConsumerReactiveHttpClientFactory.java @@ -20,18 +20,21 @@ package org.onap.dcaegen2.services.prh.service.consumer; +import javax.net.ssl.SSLException; import org.onap.dcaegen2.services.prh.config.DmaapConsumerConfiguration; public class ConsumerReactiveHttpClientFactory { - private final DMaaPReactiveWebClient reactiveWebClient; + private final DMaaPReactiveWebClientFactory reactiveWebClient; - public ConsumerReactiveHttpClientFactory(DMaaPReactiveWebClient reactiveWebClient) { + public ConsumerReactiveHttpClientFactory(DMaaPReactiveWebClientFactory reactiveWebClient) { this.reactiveWebClient = reactiveWebClient; } - public DMaaPConsumerReactiveHttpClient create(DmaapConsumerConfiguration consumerConfiguration) { - return new DMaaPConsumerReactiveHttpClient(consumerConfiguration, reactiveWebClient.build()); + public DMaaPConsumerReactiveHttpClient create(DmaapConsumerConfiguration consumerConfiguration) + throws SSLException { + return new DMaaPConsumerReactiveHttpClient(consumerConfiguration, + reactiveWebClient.build(consumerConfiguration)); } } diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClient.java b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClientFactory.java index 9eb6ee62..68dda512 100644 --- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClient.java +++ b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/DMaaPReactiveWebClientFactory.java @@ -23,30 +23,62 @@ package org.onap.dcaegen2.services.prh.service.consumer; import static org.onap.dcaegen2.services.prh.model.logging.MdcVariables.RESPONSE_CODE; import static org.onap.dcaegen2.services.prh.model.logging.MdcVariables.SERVICE_NAME; +import io.netty.handler.ssl.SslContext; +import javax.net.ssl.SSLException; +import org.onap.dcaegen2.services.prh.config.DmaapConsumerConfiguration; +import org.onap.dcaegen2.services.prh.ssl.SslFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; +import org.springframework.http.client.reactive.ClientHttpConnector; +import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; +import reactor.netty.http.client.HttpClient; + /** * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 7/4/18 */ -public class DMaaPReactiveWebClient { +public class DMaaPReactiveWebClientFactory { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private final SslFactory sslFactory; + + public DMaaPReactiveWebClientFactory() { + this(new SslFactory()); + } + + DMaaPReactiveWebClientFactory(SslFactory sslFactory) { + this.sslFactory = sslFactory; + } + /** * Construct Reactive WebClient with appropriate settings. * * @return WebClient */ - public WebClient build() { + public WebClient build(DmaapConsumerConfiguration consumerConfiguration) throws SSLException { + SslContext sslContext = createSslContext(consumerConfiguration); + ClientHttpConnector reactorClientHttpConnector = new ReactorClientHttpConnector( + HttpClient.create().secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))); return WebClient.builder() - .filter(logRequest()) - .filter(logResponse()) - .build(); + .clientConnector(reactorClientHttpConnector) + .filter(logRequest()) + .filter(logResponse()) + .build(); + } + + private SslContext createSslContext(DmaapConsumerConfiguration consumerConfiguration) throws SSLException { + if (consumerConfiguration.enableDmaapCertAuth()) { + return sslFactory.createSecureContext( + consumerConfiguration.keyStore(), consumerConfiguration.keyStorePassword(), + consumerConfiguration.trustStore(), consumerConfiguration.trustStorePassword() + ); + } + return sslFactory.createInsecureContext(); } private ExchangeFilterFunction logResponse() { diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/producer/DMaaPPublisherReactiveHttpClient.java b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/producer/DMaaPPublisherReactiveHttpClient.java index d4687c51..b262e6e9 100644 --- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/producer/DMaaPPublisherReactiveHttpClient.java +++ b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/producer/DMaaPPublisherReactiveHttpClient.java @@ -29,6 +29,8 @@ import java.net.URI; import java.util.UUID; import org.onap.dcaegen2.services.prh.config.DmaapPublisherConfiguration; import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -45,6 +47,7 @@ import reactor.core.publisher.Mono; */ public class DMaaPPublisherReactiveHttpClient { + private final Logger logger = LoggerFactory.getLogger(DMaaPPublisherReactiveHttpClient.class); private final String dmaapHostName; private final Integer dmaapPortNumber; private final String dmaapProtocol; @@ -77,6 +80,7 @@ public class DMaaPPublisherReactiveHttpClient { public Mono<ResponseEntity<String>> getDMaaPProducerResponse(ConsumerDmaapModel consumerDmaapModelMono) { return Mono.defer(() -> { HttpEntity<String> request = new HttpEntity<>(createJsonBody(consumerDmaapModelMono), getAllHeaders()); + logger.info("Request: {} {}", getUri(), request); return Mono.just(restTemplate.exchange(getUri(), HttpMethod.POST, request, String.class)); }); |