X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ms%2Fblueprintsprocessor%2Fmodules%2Fcommons%2Frest-lib%2Fsrc%2Fmain%2Fkotlin%2Forg%2Fonap%2Fccsdk%2Fcds%2Fblueprintsprocessor%2Frest%2Fservice%2FSSLRestClientService.kt;h=602609b6ae68c8548a063dbe141c55b1f81a759a;hb=refs%2Fchanges%2F74%2F130374%2F4;hp=2acf776cace45491c8e3c0363d207f63ec9bd55a;hpb=c4dce93368dd9ac437668506b9e53967fb55079a;p=ccsdk%2Fcds.git diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt index 2acf776ca..602609b6a 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/SSLRestClientService.kt @@ -17,11 +17,14 @@ package org.onap.ccsdk.cds.blueprintsprocessor.rest.service +import org.apache.http.conn.ssl.NoopHostnameVerifier import org.apache.http.conn.ssl.SSLConnectionSocketFactory import org.apache.http.impl.client.CloseableHttpClient import org.apache.http.impl.client.HttpClients import org.apache.http.message.BasicHeader import org.apache.http.ssl.SSLContextBuilder +import org.onap.ccsdk.cds.blueprintsprocessor.rest.BasicAuthRestClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.rest.RestClientProperties import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLBasicAuthRestClientProperties import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLRestClientProperties import org.onap.ccsdk.cds.blueprintsprocessor.rest.SSLTokenAuthRestClientProperties @@ -33,8 +36,8 @@ import java.io.FileInputStream import java.security.KeyStore import java.security.cert.X509Certificate -class SSLRestClientService(private val restClientProperties: SSLRestClientProperties) : - BlueprintWebClientService { +open class SSLRestClientService(private val restClientProperties: SSLRestClientProperties) : + BaseBlueprintWebClientService() { var auth: BlueprintWebClientService? = null @@ -42,12 +45,18 @@ class SSLRestClientService(private val restClientProperties: SSLRestClientProper auth = getAuthService() } - private fun getAuthService(): BlueprintWebClientService? { - //type,url and additional headers don't get carried over to TokenAuthRestClientProperties from SSLTokenAuthRestClientProperties - //set them in auth obj to be consistent. TODO: refactor + override fun getRestClientProperties(): SSLRestClientProperties { + return restClientProperties + } + + private fun getAuthService(): BaseBlueprintWebClientService? { + // type,url and additional headers don't get carried over to TokenAuthRestClientProperties from SSLTokenAuthRestClientProperties + // set them in auth obj to be consistent. TODO: refactor return when (restClientProperties) { is SSLBasicAuthRestClientProperties -> { - val basicAuthProps = restClientProperties.basicAuth!! + val basicAuthProps = BasicAuthRestClientProperties() + basicAuthProps.username = restClientProperties.username + basicAuthProps.password = restClientProperties.password basicAuthProps.additionalHeaders = restClientProperties.additionalHeaders basicAuthProps.url = restClientProperties.url basicAuthProps.type = restClientProperties.type @@ -61,7 +70,7 @@ class SSLRestClientService(private val restClientProperties: SSLRestClientProper TokenAuthRestClientService(token) } else -> { - //Returns null for No auth + // Returns null for No auth null } } @@ -73,11 +82,8 @@ class SSLRestClientService(private val restClientProperties: SSLRestClientProper } return mapOf( HttpHeaders.CONTENT_TYPE to MediaType.APPLICATION_JSON_VALUE, - HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE) - } - - override fun host(uri: String): String { - return restClientProperties.url + uri + HttpHeaders.ACCEPT to MediaType.APPLICATION_JSON_VALUE + ) } override fun httpClient(): CloseableHttpClient { @@ -87,6 +93,7 @@ class SSLRestClientService(private val restClientProperties: SSLRestClientProper val sslKeyPwd = restClientProperties.sslKeyPassword val sslTrust = restClientProperties.sslTrust val sslTrustPwd = restClientProperties.sslTrustPassword + val sslTrustIgnoreHostname = restClientProperties.sslTrustIgnoreHostname val acceptingTrustStrategy = { _: Array, _: String -> true @@ -101,30 +108,32 @@ class SSLRestClientService(private val restClientProperties: SSLRestClientProper } } - sslContext.loadTrustMaterial(File(sslTrust), sslTrustPwd.toCharArray(), - acceptingTrustStrategy) - val csf = SSLConnectionSocketFactory(sslContext.build()) + sslContext.loadTrustMaterial(File(sslTrust), sslTrustPwd.toCharArray(), acceptingTrustStrategy) + var csf: SSLConnectionSocketFactory + if (sslTrustIgnoreHostname) { + csf = SSLConnectionSocketFactory(sslContext.build(), NoopHostnameVerifier()) + } else { + csf = SSLConnectionSocketFactory(sslContext.build()) + } return HttpClients.custom() .addInterceptorFirst(WebClientUtils.logRequest()) .addInterceptorLast(WebClientUtils.logResponse()) + .setDefaultRequestConfig(getRequestConfig()) .setSSLSocketFactory(csf).build() } - // Non Blocking Rest Implementation - override suspend fun httpClientNB(): CloseableHttpClient { - return httpClient() - } - override fun convertToBasicHeaders(headers: Map): Array { val mergedDefaultAndSuppliedHeaders = defaultHeaders().plus(headers) - //During the initialization, getAuthService() sets the auth variable. - //If it's not null, then we have an authentication mechanism. - //If null - indicates no-auth used + // During the initialization, getAuthService() sets the auth variable. + // If it's not null, then we have an authentication mechanism. + // If null - indicates no-auth used if (auth != null) { return auth!!.convertToBasicHeaders(mergedDefaultAndSuppliedHeaders) } - //inject additionalHeaders - return super.convertToBasicHeaders(mergedDefaultAndSuppliedHeaders - .plus(verifyAdditionalHeaders(restClientProperties))) + // inject additionalHeaders + return super.convertToBasicHeaders( + mergedDefaultAndSuppliedHeaders + .plus(verifyAdditionalHeaders(restClientProperties)) + ) } }