diff options
31 files changed, 48 insertions, 1778 deletions
@@ -3,8 +3,6 @@ target/ **/logs/ **/debug-logs/ -bundleconfig-local/etc/auth/aai-client-cert.p12 -bundleconfig-local/etc/auth/tomcat_keystore bundleconfig-local/etc/logback.xml /.pydevproject /bin/ diff --git a/aai-core/.gitignore b/aai-core/.gitignore index 2db7c680..87eaa082 100644 --- a/aai-core/.gitignore +++ b/aai-core/.gitignore @@ -1,8 +1,6 @@ .settings target/ **/logs/ -bundleconfig-local/etc/auth/aai-client-cert.p12 -bundleconfig-local/etc/auth/tomcat_keystore bundleconfig-local/etc/oxm src/main/aai_schema bundleconfig-local/etc/logback.xml diff --git a/aai-core/pom.xml b/aai-core/pom.xml index 3a993fe1..37bc75a3 100644 --- a/aai-core/pom.xml +++ b/aai-core/pom.xml @@ -168,6 +168,10 @@ limitations under the License. <version>1.1.4</version> </dependency> <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + </dependency> + <dependency> <groupId>org.janusgraph</groupId> <artifactId>janusgraph-core</artifactId> <exclusions> @@ -350,6 +354,10 @@ limitations under the License. <artifactId>jackson-databind</artifactId> </dependency> <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + </dependency> + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </dependency> diff --git a/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceOneWayClient.java b/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceOneWayClient.java index f72f6bcf..e148cee7 100644 --- a/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceOneWayClient.java +++ b/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceOneWayClient.java @@ -36,12 +36,6 @@ public class ValidationServiceOneWayClient extends OneWaySSLRestClient { @Value("${validation.service.base.url}") private String baseUrl; - @Value("${validation.service.ssl.trust-store}") - private String truststorePath; - - @Value("${validation.service.ssl.trust-store-password}") - private String truststorePassword; - @Value("${validation.service.timeout-in-milliseconds}") private Integer timeout; @@ -51,16 +45,6 @@ public class ValidationServiceOneWayClient extends OneWaySSLRestClient { } @Override - protected String getTruststorePath() { - return truststorePath; - } - - @Override - protected char[] getTruststorePassword() { - return truststorePassword.toCharArray(); - } - - @Override protected HttpComponentsClientHttpRequestFactory getHttpRequestFactory() throws Exception { HttpComponentsClientHttpRequestFactory requestFactory = super.getHttpRequestFactory(); requestFactory.setConnectionRequestTimeout(timeout); diff --git a/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceRestClient.java b/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceRestClient.java index af283063..a1ca4b46 100644 --- a/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceRestClient.java +++ b/aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceRestClient.java @@ -38,18 +38,6 @@ public class ValidationServiceRestClient extends TwoWaySSLRestClient { @Value("${validation.service.base.url}") private String baseUrl; - @Value("${validation.service.ssl.key-store}") - private String keystorePath; - - @Value("${validation.service.ssl.trust-store}") - private String truststorePath; - - @Value("${validation.service.ssl.key-store-password}") - private String keystorePassword; - - @Value("${validation.service.ssl.trust-store-password}") - private String truststorePassword; - @Value("${validation.service.timeout-in-milliseconds}") private Integer timeout; @@ -58,26 +46,6 @@ public class ValidationServiceRestClient extends TwoWaySSLRestClient { return baseUrl; } - @Override - protected String getKeystorePath() { - return keystorePath; - } - - @Override - protected String getTruststorePath() { - return truststorePath; - } - - @Override - protected char[] getKeystorePassword() { - return keystorePassword.toCharArray(); - } - - @Override - protected char[] getTruststorePassword() { - return truststorePassword.toCharArray(); - } - protected HttpComponentsClientHttpRequestFactory getHttpRequestFactory() throws Exception { HttpComponentsClientHttpRequestFactory requestFactory = super.getHttpRequestFactory(); requestFactory.setConnectionRequestTimeout(timeout); diff --git a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java deleted file mode 100644 index 23201593..00000000 --- a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.util; - -import java.io.FileInputStream; -import java.io.IOException; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.glassfish.jersey.client.ClientConfig; -import org.onap.aai.aailog.filter.RestControllerClientRequestLoggingInterceptor; -import org.onap.aai.aailog.filter.RestControllerClientResponseLoggingInterceptor; -import org.onap.aai.exceptions.AAIException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class HttpsAuthClient { - - private static final Logger logger = LoggerFactory.getLogger(HttpsAuthClient.class); - - /** - * The main method. - * - * @param args the arguments - */ - public static void main(String[] args) { - try { - String url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + "business/customers"; - System.out.println("Making Jersey https call..."); - Client client = HttpsAuthClient.getClient(); - - Response res = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", "PROV001") - .header("X-FromAppId", "AAI").get(); - } catch (KeyManagementException e) { - logger.debug("HttpsAuthClient KeyManagement error : {}", e.getMessage()); - } catch (Exception e) { - logger.debug("HttpsAuthClient error : {}", e.getMessage()); - } - } - - /** - * Gets the client. - * - * @param truststorePath the truststore path - * @param truststorePassword the truststore password - * @param keystorePath the keystore path - * @param keystorePassword the keystore password - * @return the client - * @throws KeyManagementException the key management exception - */ - public static Client getClient(String truststorePath, String truststorePassword, String keystorePath, - String keystorePassword) throws KeyManagementException, UnrecoverableKeyException, CertificateException, - NoSuchAlgorithmException, KeyStoreException, IOException { - - ClientConfig config = new ClientConfig(); - config.register(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class); - - SSLContext ctx = null; - try { - System.setProperty("javax.net.ssl.trustStore", truststorePath); - System.setProperty("javax.net.ssl.trustStorePassword", truststorePassword); - HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { - public boolean verify(String string, SSLSession ssls) { - return true; - } - }); - - ctx = SSLContext.getInstance("TLSv1.2"); - KeyManagerFactory kmf = null; - - try (FileInputStream fin = new FileInputStream(keystorePath)) { - kmf = KeyManagerFactory.getInstance("SunX509"); - KeyStore ks = KeyStore.getInstance("PKCS12"); - char[] pwd = keystorePassword.toCharArray(); - ks.load(fin, pwd); - kmf.init(ks, pwd); - } catch (Exception e) { - System.out.println("Error setting up kmf: exiting " + e.getMessage()); - throw e; - } - - ctx.init(kmf.getKeyManagers(), null, null); - config.property("jersey.config.client.ssl.context", ctx); - config.property("jersey.config.client.hostname.verifier", (HostnameVerifier) (s, sslSession) -> true); - } catch (Exception e) { - System.out.println("Error setting up config: exiting " + e.getMessage()); - throw e; - } - - Client client = ClientBuilder.newClient(config); - client.register(new RestControllerClientRequestLoggingInterceptor()); - client.register(new RestControllerClientResponseLoggingInterceptor()); - // uncomment this line to get more logging for the request/response - // client.addFilter(new LoggingFilter(System.out)); - - return client; - } - - /** - * Gets the client. - * - * @return the client - * @throws KeyManagementException the key management exception - */ - public static Client getClient() throws KeyManagementException, AAIException, UnrecoverableKeyException, - CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException { - String truststorePath = null; - String truststorePassword = null; - String keystorePath = null; - String keystorePassword = null; - truststorePath = AAIConstants.AAI_HOME_ETC_AUTH + AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_FILENAME); - truststorePassword = AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_PASSWD); - keystorePath = AAIConstants.AAI_HOME_ETC_AUTH + AAIConfig.get(AAIConstants.AAI_KEYSTORE_FILENAME); - keystorePassword = AAIConfig.get(AAIConstants.AAI_KEYSTORE_PASSWD); - return getClient(truststorePath, truststorePassword, keystorePath, keystorePassword); - } - -} diff --git a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java deleted file mode 100644 index 1ace66c7..00000000 --- a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.util; - -import java.io.FileInputStream; - -import org.glassfish.jersey.client.ClientConfig; -import org.glassfish.jersey.SslConfigurator; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; - -public class HttpsAuthExternalClient { - - /** - * Gets the client. - * - * @param keystoreFileName the keystore file name - * @param keystorePassword the keystore password - * @return the client - * @throws Exception the exception - */ - public static Client getClient(String keystoreFileName, String keystorePassword) throws Exception { - - ClientConfig config = new ClientConfig(); - config.register(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class); - - SSLContext sslContext = null; - String truststorePath = AAIConstants.AAI_HOME_ETC_AUTH + AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_FILENAME); - try (FileInputStream tin = new FileInputStream(truststorePath)) { - String truststorePassword = AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_PASSWD); - String keystorePath = AAIConstants.AAI_HOME_ETC_AUTH + keystoreFileName; - - SslConfigurator sslConfig = SslConfigurator.newInstance() - .trustStoreFile(truststorePath) - .trustStorePassword(truststorePassword) - .keyStoreFile(keystorePath) - .keyStorePassword(keystorePassword); - - sslContext = sslConfig.createSSLContext(); - - HostnameVerifier hostnameVerifier = new HostnameVerifier() { - @Override - public boolean verify(String s, SSLSession sslSession) { - return true; - } - }; - - Client client = ClientBuilder.newBuilder() - .withConfig(config) - .sslContext(sslContext) - .hostnameVerifier(hostnameVerifier) - .build(); - - // Uncomment this line to get more logging for the request/response - // client.register(new - // LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), - // Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, 8192)); - - return client; - } catch (Exception e) { - throw e; - } - } - -} diff --git a/aai-core/src/main/java/org/onap/aai/util/RestController.java b/aai-core/src/main/java/org/onap/aai/util/RestController.java deleted file mode 100644 index b72b5af5..00000000 --- a/aai-core/src/main/java/org/onap/aai/util/RestController.java +++ /dev/null @@ -1,640 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.util; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.type.TypeFactory; - -import javax.ws.rs.client.Entity; - -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import javax.ws.rs.ClientErrorException; -import javax.ws.rs.client.Client; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onap.aai.exceptions.AAIException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class RestController implements RestControllerInterface { - - private static final String TARGET_NAME = "AAI"; - private static final Logger LOGGER = LoggerFactory.getLogger(RestController.class); - - private static Client client = null; - - private String restSrvrBaseURL; - - private String overrideLocalHost = null; - - // To do - Come up with helper function that will automatically - // generate the REST API path based on path parameter(s) and query parameter(s)! - public static final String REST_APIPATH_COMPLEXES = "cloud-infrastructure/complexes"; - public static final String REST_APIPATH_COMPLEX = "cloud-infrastructure/complexes/complex/"; - public static final String REST_APIPATH_PSERVERS = "cloud-infrastructure/pservers"; - public static final String REST_APIPATH_PSERVER = "cloud-infrastructure/pservers/pserver/"; - public static final String REST_APIPATH_PHYSICALLINKS = "network/physical-links/"; - public static final String REST_APIPATH_PHYSICALLINK = "network/physical-links/physical-link/"; - public static final String REST_APIPATH_PINTERFACES = "network/p-interfaces/"; - public static final String REST_APIPATH_PINTERFACE = "network/p-interfaces/p-interface/"; - public static final String REST_APIPATH_VPLSPES = "network/vpls-pes/"; - public static final String REST_APIPATH_VPLSPE = "network/vpls-pes/vpls-pe/"; - public static final String REST_APIPATH_UPDATE = "actions/update/"; - public static final String REST_APIPATH_SEARCH = "search/nodes-query?search-node-type="; - - public static final String REST_APIPATH_CLOUDREGION = "cloud-infrastructure/cloud-regions/cloud-region/"; - public static final String REST_APIPATH_TENANT = "cloud-infrastructure/tenants/tenant/"; - public static final String REST_APIPATH_VIRTUAL_DATA_CENTER = "cloud-infrastructure/virtual-data-centers/virtual-data-center/"; - public static final String REST_APIPATH_VIRTUAL_DATA_CENTERS = "cloud-infrastructure/virtual-data-centers/"; - public static final String REST_APIPATH_GENERIC_VNF = "network/generic-vnfs/generic-vnf/"; - public static final String REST_APIPATH_GENERIC_VNFS = "network/generic-vnfs"; - public static final String REST_APIPATH_L3_NETWORK = "network/l3-networks/l3-network/"; - public static final String REST_APIPATH_L3_NETWORKS = "network/l3-networks"; - public static final String REST_APIPATH_INSTANCE_GROUP = "network/instance-groups/instance-group"; - public static final String REST_APIPATH_INSTANCE_GROUPS = "network/instance-groups"; - public static final String REST_APIPATH_VFMODULE = "nodes/vf-modules/vf-module/"; - - public static final String REST_APIPATH_VCE = "network/vces/vce/"; - - public static final String REST_APIPATH_SERVICE = "service-design-and-creation/services/service/"; - public static final String REST_APIPATH_LOGICALLINKS = "network/logical-links/"; - public static final String REST_APIPATH_LOGICALLINK = "network/logical-links/logical-link/"; - - public RestController(String truststorePath, String truststorePassword, String keystorePath, - String keystorePassword) throws AAIException { - this.initRestClient(truststorePath, truststorePassword, keystorePath, keystorePassword); - } - - /** - * Inits the rest client. - * - * @throws AAIException the AAI exception - */ - public void initRestClient(String truststorePath, String truststorePassword, String keystorePath, - String keystorePassword) throws AAIException { - if (client == null) { - try { - client = getHttpsAuthClient(truststorePath, truststorePassword, keystorePath, keystorePassword); - } catch (KeyManagementException e) { - throw new AAIException("AAI_7117", "KeyManagementException in REST call to DB: " + e.toString()); - } catch (Exception e) { - throw new AAIException("AAI_7117", " Exception in REST call to DB: " + e.toString()); - } - } - } - - public Client getHttpsAuthClient(String truststorePath, String truststorePassword, String keystorePath, - String keystorePassword) throws KeyManagementException, UnrecoverableKeyException, CertificateException, - NoSuchAlgorithmException, KeyStoreException, IOException { - return HttpsAuthClient.getClient(truststorePath, truststorePassword, keystorePath, keystorePassword); - } - - public Client getHttpsAuthClient() throws KeyManagementException, UnrecoverableKeyException, CertificateException, - NoSuchAlgorithmException, KeyStoreException, IOException, AAIException { - return HttpsAuthClient.getClient(); - } - - /** - * Sets the rest srvr base URL. - * - * @param baseURL the base URL - * @throws AAIException the AAI exception - */ - public void SetRestSrvrBaseURL(String baseURL) throws AAIException { - if (baseURL == null) - throw new AAIException("AAI_7117", "REST Server base URL cannot be null."); - restSrvrBaseURL = baseURL; - } - - /** - * Gets the rest srvr base URL. - * - * @return the rest srvr base URL - */ - public String getRestSrvrBaseURL() { - return restSrvrBaseURL; - } - - public <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, boolean oldserver) - throws AAIException { - Get(t, sourceID, transId, path, restObject, oldserver, AAIConstants.AAI_RESOURCES_PORT); - } - - /** - * To do - optimization and automation. Also make it as generic as possible. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @param restObject the rest object - * @param oldserver the oldserver - * @throws AAIException the AAI exception - */ - @SuppressWarnings("unchecked") - public <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, boolean oldserver, - int port) throws AAIException { - String methodName = "Get"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - restObject.set(t); - - if (oldserver) { - url = AAIConfig.get(AAIConstants.AAI_OLDSERVER_URL) + path; - } else { - if (overrideLocalHost == null) { - overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, - AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT); - } - if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) { - url = String.format(AAIConstants.AAI_LOCAL_REST, port, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } else { - url = String.format(AAIConstants.AAI_LOCAL_REST_OVERRIDE, overrideLocalHost, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } - } - LOGGER.debug(url + " for the get REST API"); - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .get(); - - // System.out.println("response.EntityInputSream()="+response.getEntityInputStream().toString()); - // System.out.println("response.tostring()="+response.toString()); - - if (response.getStatus() == 200) { - // System.out.println(methodName + ": url=" + url); - T entity = response.readEntity((Class<T>) t.getClass()); - restObject.set(entity); - restObject.set(t); - LOGGER.debug(methodName + "REST api GET was successfull!"); - } else { - // System.out.println(methodName + ": url=" + url + " failed with status=" + - // response.getStatus()); - throw new AAIException("AAI_7116", methodName + " with status=" + response.getStatus() + ", url=" + url); - } - } - - /** - * To do - optimization and automation. Also make it as generic as possible. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @param restObject the rest object - * @param oldserver the oldserver - * @throws AAIException the AAI exception - */ - @SuppressWarnings("unchecked") - public <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, String apiVersion) - throws AAIException { - String methodName = "Get"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - restObject.set(t); - - url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path; - - LOGGER.debug(url + " for the get REST API"); - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .get(); - - // System.out.println("response.EntityInputSream()="+response.getEntityInputStream().toString()); - // System.out.println("response.tostring()="+response.toString()); - - if (response.getStatus() == 200) { - // System.out.println(methodName + ": url=" + url); - T entity = response.readEntity((Class<T>) t.getClass()); - restObject.set(entity); - LOGGER.debug(methodName + "REST api GET was successfull!"); - } else { - // System.out.println(methodName + ": url=" + url + " failed with status=" + - // response.getStatus()); - throw new AAIException("AAI_7116", methodName + " with status=" + response.getStatus() + ", url=" + url); - } - } - - /** - * Map json to object list. - * - * @param <T> the generic type - * @param typeDef the type def - * @param json the json - * @param clazz the clazz - * @return the list - * @throws Exception the exception - */ - private <T> List<T> mapJsonToObjectList(T typeDef, String json, Class<?> clazz) throws Exception { - List<T> list; - ObjectMapper mapper = new ObjectMapper(); - System.out.println(json); - TypeFactory t = TypeFactory.defaultInstance(); - list = mapper.readValue(json, t.constructCollectionType(ArrayList.class, clazz)); - - return list; - } - - /** - * Put. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @throws AAIException the AAI exception - */ - public <T> void Put(T t, String sourceID, String transId, String path) throws AAIException { - Put(t, sourceID, transId, path, false, AAIConstants.AAI_RESOURCES_PORT); - } - - /** - * Put. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @throws AAIException the AAI exception - */ - public <T> void Put(T t, String sourceID, String transId, String path, boolean oldserver) throws AAIException { - Put(t, sourceID, transId, path, oldserver, AAIConstants.AAI_RESOURCES_PORT); - } - - /** - * Put. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @param oldserver the oldserver - * @throws AAIException the AAI exception - */ - public <T> void Put(T t, String sourceID, String transId, String path, boolean oldserver, int port) - throws AAIException { - String methodName = "Put"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - if (oldserver) { - url = AAIConfig.get(AAIConstants.AAI_OLDSERVER_URL) + path; - } else { - if (overrideLocalHost == null) { - overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, - AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT); - } - if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) { - url = String.format(AAIConstants.AAI_LOCAL_REST, port, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } else { - url = String.format(AAIConstants.AAI_LOCAL_REST_OVERRIDE, overrideLocalHost, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } - } - - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .put(Entity.entity(t, MediaType.APPLICATION_JSON)); - - // System.out.println("response.tostring()="+response.toString()); - - int statuscode = response.getStatus(); - if (statuscode >= 200 && statuscode <= 299) { - LOGGER.debug(methodName + ": url=" + url + ", request=" + path); - } else { - throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg=" - + response.readEntity(String.class)); - } - } - - /** - * Put. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @param apiVersion version number - * @throws AAIException the AAI exception - */ - public <T> void Put(T t, String sourceID, String transId, String path, String apiVersion) throws AAIException { - String methodName = "Put"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path; - - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .put(Entity.entity(t, MediaType.APPLICATION_JSON)); - - // System.out.println("response.tostring()="+response.toString()); - - int statuscode = response.getStatus(); - if (statuscode >= 200 && statuscode <= 299) { - LOGGER.debug(methodName + ": url=" + url + ", request=" + path); - } else { - throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg=" - + response.getEntity()); - } - } - - public void Delete(String sourceID, String transId, String path) throws AAIException { - Delete(sourceID, transId, path, AAIConstants.AAI_RESOURCES_PORT); - } - - /** - * Delete. - * - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @throws AAIException the AAI exception - */ - public void Delete(String sourceID, String transId, String path, int port) throws AAIException { - String methodName = "Delete"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - String request = "{}"; - if (overrideLocalHost == null) { - overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT); - } - if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) { - url = String.format(AAIConstants.AAI_LOCAL_REST, port, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } else { - url = String.format(AAIConstants.AAI_LOCAL_REST_OVERRIDE, overrideLocalHost, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .delete(); - - if (response.getStatus() == 404) { // resource not found - LOGGER.info( - "Resource does not exist...: " + response.getStatus() + ":" + response.readEntity(String.class)); - } else if (response.getStatus() == 200 || response.getStatus() == 204) { - LOGGER.info("Resource " + url + " deleted"); - } else { - LOGGER.error("Deleting Resource failed: " + response.getStatus() + ":" + response.readEntity(String.class)); - throw new AAIException("AAI_7116", "Error during DELETE"); - } - } - - public <T> String Post(T t, String sourceID, String transId, String path) throws Exception { - return Post(t, sourceID, transId, path, AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)); - } - - /** - * Post. - * - * @param <T> the generic type - * @param t the t - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @param apiVersion the apiVersion - * @return the string - * @throws Exception the exception - */ - public <T> String Post(T t, String sourceID, String transId, String path, String apiVersion) throws Exception { - String methodName = "Post"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - LOGGER.debug(methodName + " start"); - - try { - - url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path; - - Response response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("Real-Time", "true") - .post(Entity.entity(t, MediaType.APPLICATION_JSON)); - - int statuscode = response.getStatus(); - if (statuscode >= 200 && statuscode <= 299) { - LOGGER.debug(methodName + "REST api POST was successful!"); - return response.readEntity(String.class); - } else { - throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg=" - + response.readEntity(String.class)); - } - - } catch (AAIException e) { - throw new AAIException("AAI_7116", methodName + " with url=" + url + ", Exception: " + e.toString()); - } catch (Exception e) { - throw new AAIException("AAI_7116", methodName + " with url=" + url + ", Exception: " + e.toString()); - - } finally { - } - } - - /** - * Gets the single instance of RestController. - * - * @param <T> the generic type - * @param clazz the clazz - * @return single instance of RestController - * @throws IllegalAccessException the illegal access exception - * @throws InstantiationException the instantiation exception - * @throws SecurityException - * @throws NoSuchMethodException - * @throws InvocationTargetException - * @throws IllegalArgumentException - */ - public <T> T getInstance(Class<T> clazz) throws IllegalAccessException, InstantiationException, - IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { - return clazz.getDeclaredConstructor().newInstance(); - } - - /** - * Does resource exist. - * - * @param <T> the generic type - * @param resourcePath the resource path - * @param resourceClassName the resource class name - * @param fromAppId the from app id - * @param transId the trans id - * @return the t - */ - /* - * DoesResourceExist - * - * To check whether a resource exist or get a copy of the existing version of the resource - * - * Resourcepath: should contain the qualified resource path (including encoded unique key identifier value), - * resourceClassName: is the canonical name of the resource class name, - * fromAppId: - * transId: - * - * Will return null (if the resource doesn’t exist) (or) - * Will return the specified resource from the Graph. - * - * Example: - * LogicalLink llink = new LogicalLink(); - * String resourceClassName = llink.getClass().getCanonicalName(); - * llink = RestController.DoesResourceExist("network/logical-links/logical-link/" + <encoded-link-name>, - * resourceClassName, fromAppId, transId); - */ - public <T> T DoesResourceExist(String resourcePath, String resourceClassName, String fromAppId, String transId) { - - try { - - RestObject<T> restObj = new RestObject<T>(); - @SuppressWarnings("unchecked") - T resourceObj = (T) getInstance(Class.forName(resourceClassName)); - restObj.set(resourceObj); - Get(resourceObj, fromAppId, transId, resourcePath, restObj, false, AAIConstants.AAI_RESOURCES_PORT); - - resourceObj = restObj.get(); - if (resourceObj != null) - return resourceObj; - - } catch (AAIException e) { - - } catch (ClientErrorException che) { - - } catch (Exception e) { - - } - - return null; - } - - /** - * Patch. - * - * @param <T> the generic type - * @param sourceID the source ID - * @param transId the trans id - * @param path the path - * @throws AAIException the AAI exception - */ - public <T> void Patch(T t, String sourceID, String transId, String path) throws AAIException { - String methodName = "Patch"; - String url = ""; - transId += ":" + UUID.randomUUID().toString(); - - int numRetries = 5; - Response response = null; - int statusCode = -1; - - try { - if (overrideLocalHost == null) { - overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, - AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT); - } - if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) { - url = String.format(AAIConstants.AAI_LOCAL_REST, AAIConstants.AAI_RESOURCES_PORT, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } else { - url = String.format(AAIConstants.AAI_LOCAL_REST_OVERRIDE, overrideLocalHost, - AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path; - } - - do { - - response = client.target(url) - .request(MediaType.APPLICATION_JSON) - .header("X-TransactionId", transId) - .header("X-FromAppId", sourceID) - .header("X-HTTP-Method-Override", "PATCH") - .post(Entity.entity(t, "application/merge-patch+json")); - - statusCode = response.getStatus(); - - if (statusCode >= 200 && statusCode <= 299) { - LOGGER.debug(methodName + "REST api PATCH was successful!"); - return; - } else { - LOGGER.debug(methodName + "Unable to make the patch request to url " + url + " so retrying"); - } - - numRetries--; - - } while (numRetries >= 0); - - LOGGER.debug(methodName + "Unable to make the patch request to url " + url + " even after trying = " - + numRetries + " times."); - throw new AAIException("AAI_7116", methodName + " with status=" + statusCode + ", url=" + url + ", msg=" - + response.readEntity(String.class)); - - } catch (AAIException e) { - throw new AAIException("AAI_7116", methodName + " with url=" + url + ", Exception: " + e.toString()); - } catch (Exception e) { - throw new AAIException("AAI_7116", methodName + " with url=" + url + ", Exception: " + e.toString()); - - } finally { - } - - } -} diff --git a/aai-core/src/main/java/org/onap/aai/util/RestControllerInterface.java b/aai-core/src/main/java/org/onap/aai/util/RestControllerInterface.java deleted file mode 100644 index 6d20a010..00000000 --- a/aai-core/src/main/java/org/onap/aai/util/RestControllerInterface.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.util; - -import java.lang.reflect.InvocationTargetException; - -import org.onap.aai.exceptions.AAIException; - -public interface RestControllerInterface { - - public <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, boolean oldserver) - throws AAIException; - - public <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, String apiVersion) - throws AAIException; - - public <T> void Patch(T t, String sourceID, String transId, String path) throws AAIException; - - public <T> void Put(T t, String sourceID, String transId, String path) throws AAIException; - - public <T> void Put(T t, String sourceID, String transId, String path, boolean oldserver) throws AAIException; - - public void Delete(String sourceID, String transId, String path) throws AAIException; - - public <T> T getInstance(Class<T> clazz) throws IllegalAccessException, InstantiationException, - IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException; - - public <T> T DoesResourceExist(String resourcePath, String resourceClassName, String fromAppId, String transId); -} diff --git a/aai-core/src/test/resources/bundleconfig-local/aaf/cadi.properties b/aai-core/src/test/resources/bundleconfig-local/aaf/cadi.properties deleted file mode 100644 index 8f7004ff..00000000 --- a/aai-core/src/test/resources/bundleconfig-local/aaf/cadi.properties +++ /dev/null @@ -1,14 +0,0 @@ -## Location properties -## -## Localized Machine Information -## -cadi_loglevel=DEBUG -cadi_latitude=38.0 -cadi_longitude=-72.0 - -# Locate URL (which AAF Env) - Use lower case -aaf_locate_url=https://aafist.test.org:8095 -# AAF URL - Use upper case -aaf_url=https://AAF_LOCATE_URL/service:2.0 -# -cadi_prop_files=src/test/resources/bundleconfig-local/aaf/org.onap.aai.props diff --git a/aai-core/src/test/resources/bundleconfig-local/aaf/org.onap.aai.props b/aai-core/src/test/resources/bundleconfig-local/aaf/org.onap.aai.props deleted file mode 100644 index 3056e5f9..00000000 --- a/aai-core/src/test/resources/bundleconfig-local/aaf/org.onap.aai.props +++ /dev/null @@ -1,4 +0,0 @@ -cm_url=cm_url -hostname=hostname -aaf_env=IST -cadi_x509_issuers=CN=AAF CADI Test Issuing CA 01, OU=CSO, O=CO, C=US:CN=AAF CADI Test Issuing CA 02, OU=CSO, O=CO, C=US
\ No newline at end of file diff --git a/aai-els-onap-logging/pom.xml b/aai-els-onap-logging/pom.xml index 31802ea0..1f818661 100644 --- a/aai-els-onap-logging/pom.xml +++ b/aai-els-onap-logging/pom.xml @@ -80,17 +80,6 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>3.12.4</version> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <scope>test</scope> @@ -131,11 +120,22 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> - <exclusion> - <groupId>com.vaadin.external.google</groupId> - <artifactId>android-json</artifactId> - </exclusion> - </exclusions> + <exclusion> + <groupId>com.vaadin.external.google</groupId> + <artifactId>android-json</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>3.12.4</version> + <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> diff --git a/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIApplicationConfig.java b/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIApplicationConfig.java index a7a87dca..30dd66b8 100644 --- a/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIApplicationConfig.java +++ b/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIApplicationConfig.java @@ -20,16 +20,12 @@ package org.onap.aai.util; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.io.IOUtils; import org.eclipse.jetty.util.security.Password; import org.onap.aai.exceptions.AAIException; import org.slf4j.Logger; @@ -39,19 +35,10 @@ public class AAIApplicationConfig { private static final Logger LOGGER = LoggerFactory.getLogger(AAIApplicationConfig.class); private static String GLOBAL_PROP_FILE_NAME = "application.properties"; - private static final String SERVER_CERTS_LOCATION_PROP_NAME = "server.certs.location"; - private static final String PASSPHRASSES_FILENAME = ".passphrases"; - private static final String PASSWORD_FILENAME = ".password"; - private static final String TRUSTSTORE_PASSWORD_PROP_NAME = "cadi_truststore_password"; - public static final String SERVER_SSL_KEYSTORE_PROP_NAME = "server.ssl.key-store"; - public static final String SERVER_SSL_KEYSTORE_PKCS12_PROP_NAME = "server.ssl.key-store.pkcs12"; - public static final String SERVER_SSL_TRUSTSTORE_PROP_NAME = "server.ssl.trust-store"; - public static final String TRUSTSTORE_PASSWORD_NAME = "server.ssl.trust-store-password"; - public static final String KEYSTORE_PASSWORD_NAME = "server.ssl.key-store-password"; + private static Properties serverProps; private static boolean propsInitialized = false; - private static String TRUSTSTORE_PASSWORD = null; - private static String KEYSTORE_PASSWORD = null; + private static final String PROPERTY_REGEX = "\\$\\{([^\\$\\{\\}]+)\\}"; /** @@ -85,8 +72,6 @@ public class AAIApplicationConfig { newServerProps.load(is); propsInitialized = true; serverProps = newServerProps; - TRUSTSTORE_PASSWORD = retrieveTruststorePassword(); - KEYSTORE_PASSWORD = retrieveKeystorePassword(); } catch (Exception fnfe) { final InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties"); @@ -95,8 +80,6 @@ public class AAIApplicationConfig { try { newServerProps.load(is); serverProps = newServerProps; - TRUSTSTORE_PASSWORD = retrieveTruststorePassword(); - KEYSTORE_PASSWORD = retrieveKeystorePassword(); } catch (IOException e) { LOGGER.warn("Encountered IO Exception during loading of props from inputstream", e); } @@ -158,162 +141,6 @@ public class AAIApplicationConfig { } /** - * Gets the keystore path - * - * @return the string - * @throws AAIException the AAI exception - */ - public static String getKeystore() throws AAIException { - return (get(SERVER_SSL_KEYSTORE_PROP_NAME)); - } - - /** - * Gets the PKCS12 keystore path - * - * @return the string - * @throws AAIException the AAI exception - */ - public static String getKeystorePkcs12() throws AAIException { - return (get(SERVER_SSL_KEYSTORE_PKCS12_PROP_NAME)); - } - - /** - * Gets the keystore path - * - * @return the string - * @throws AAIException the AAI exception - */ - public static String getTruststore() throws AAIException { - return (get(SERVER_SSL_TRUSTSTORE_PROP_NAME)); - } - - /** - * Retrieve the keystore password - * - * @return the password - */ - private static String retrieveKeystorePassword() { - String certPath = serverProps.getProperty(SERVER_CERTS_LOCATION_PROP_NAME); - if (certPath == null) { - return null; - } - try { - certPath = replaceProperties(certPath); - } catch (AAIException e) { - return null; - } - return (retrieveKeystorePasswordWithCertPath(certPath)); - } - - /** - * Retrieve the keystore password - * - * @return the password - */ - private static String retrieveKeystorePasswordWithCertPath(String certPath) { - - File passwordFile = null; - InputStream passwordStream = null; - String keystorePassword = null; - - // Override the passwords from application.properties if we find AAF certman files - try { - passwordFile = new File(certPath + PASSWORD_FILENAME); - passwordStream = new FileInputStream(passwordFile); - keystorePassword = IOUtils.toString(passwordStream, Charset.defaultCharset()); - if (keystorePassword != null) { - keystorePassword = keystorePassword.trim(); - } - - } catch (IOException e) { - LOGGER.warn("Not using AAF Certman password file, e=" + e.getMessage()); - } catch (NullPointerException n) { - LOGGER.warn("Not using AAF Certman passphrases file, e=" + n.getMessage()); - } finally { - if (passwordStream != null) { - try { - passwordStream.close(); - } catch (Exception e) { - } - } - } - return keystorePassword; - } - - /** - * Get the keystore password - * - * @return the password - */ - public static String getKeystorePassword() { - return (KEYSTORE_PASSWORD); - } - - /** - * Gets the truststore password - * - * @return the password - */ - private static String retrieveTruststorePasswordWithCertPath(String certPath) { - - File passphrasesFile = null; - InputStream passphrasesStream = null; - String truststorePassword = null; - try { - passphrasesFile = new File(certPath + PASSPHRASSES_FILENAME); - passphrasesStream = new FileInputStream(passphrasesFile); - - Properties passphrasesProps = new Properties(); - passphrasesProps.load(passphrasesStream); - truststorePassword = passphrasesProps.getProperty(TRUSTSTORE_PASSWORD_PROP_NAME); - if (truststorePassword != null) { - truststorePassword = truststorePassword.trim(); - } - - } catch (IOException e) { - LOGGER.warn("Not using AAF Certman passphrases file, e=" + e.getMessage()); - } catch (NullPointerException n) { - LOGGER.warn("Not using AAF Certman passphrases file, e=" + n.getMessage()); - } finally { - if (passphrasesStream != null) { - try { - passphrasesStream.close(); - } catch (Exception e) { - } - } - } - - return truststorePassword; - } - - /** - * Gets the truststore password - * - * @return the password - */ - private static String retrieveTruststorePassword() { - String certPath = serverProps.getProperty(SERVER_CERTS_LOCATION_PROP_NAME); - if (certPath == null) { - return null; - } - try { - certPath = replaceProperties(certPath); - } catch (AAIException e) { - return null; - } - return (retrieveTruststorePasswordWithCertPath(certPath)); - } - - /** - * Get the trustore password - * - * @return the password - */ - public static String getTruststorePassword() { - return (TRUSTSTORE_PASSWORD); - } - - /** * Gets the int value for the key. * * @param key the key @@ -370,49 +197,4 @@ public class AAIApplicationConfig { m.appendTail(sb); return (sb.toString()); } - - public static Properties retrieveKeystoreProps() throws AAIException { - - Properties props = new Properties(); - String truststorePath = System.getProperty(SERVER_SSL_TRUSTSTORE_PROP_NAME); - String truststorePassword = System.getProperty(TRUSTSTORE_PASSWORD_NAME); - String keystorePath = System.getProperty(SERVER_SSL_KEYSTORE_PKCS12_PROP_NAME); - String keystorePassword = System.getProperty(KEYSTORE_PASSWORD_NAME); - String certLocation = System.getProperty(SERVER_CERTS_LOCATION_PROP_NAME); - - if (truststorePath == null || truststorePath.isEmpty()) { - truststorePath = AAIApplicationConfig.getTruststore(); - } - if (truststorePath != null) { - props.setProperty(SERVER_SSL_TRUSTSTORE_PROP_NAME, truststorePath); - } - if (truststorePassword == null || truststorePassword.isEmpty()) { - if (certLocation != null && (!certLocation.isEmpty())) { - truststorePassword = AAIApplicationConfig.retrieveTruststorePasswordWithCertPath(certLocation); - } else { - truststorePassword = AAIApplicationConfig.getTruststorePassword(); - } - - } - if (truststorePassword != null) { - props.setProperty(TRUSTSTORE_PASSWORD_NAME, truststorePassword); - } - if (keystorePath == null || keystorePath.isEmpty()) { - keystorePath = AAIApplicationConfig.getKeystorePkcs12(); - } - if (keystorePath != null) { - props.setProperty(SERVER_SSL_KEYSTORE_PKCS12_PROP_NAME, keystorePath); - } - if (keystorePassword == null || keystorePassword.isEmpty()) { - if (certLocation != null && (!certLocation.isEmpty())) { - keystorePassword = AAIApplicationConfig.retrieveKeystorePasswordWithCertPath(certLocation); - } else { - keystorePassword = AAIApplicationConfig.getKeystorePassword(); - } - } - if (keystorePassword != null) { - props.setProperty(KEYSTORE_PASSWORD_NAME, keystorePassword); - } - return (props); - } } diff --git a/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIConstants.java b/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIConstants.java index a1a36189..4a7c4896 100644 --- a/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIConstants.java +++ b/aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIConstants.java @@ -59,11 +59,6 @@ public final class AAIConstants { public static final String AAI_SCHEMA_MOD_LOGBACK_PROPS = "schemaMod-logback.xml"; public static final String AAI_FORCE_DELETE_LOGBACK_PROPS = "forceDelete-logback.xml"; - public static final String AAI_TRUSTSTORE_FILENAME = "aai.truststore.filename"; - public static final String AAI_TRUSTSTORE_PASSWD = "aai.truststore.passwd"; - public static final String AAI_KEYSTORE_FILENAME = "aai.keystore.filename"; - public static final String AAI_KEYSTORE_PASSWD = "aai.keystore.passwd"; - public static final String AAI_SERVER_URL_BASE = "aai.server.url.base"; public static final String AAI_SERVER_URL = "aai.server.url"; public static final String AAI_OLDSERVER_URL = "aai.oldserver.url"; diff --git a/aai-els-onap-logging/src/test/java/org/onap/aai/util/AAIApplicationConfigTest.java b/aai-els-onap-logging/src/test/java/org/onap/aai/util/AAIApplicationConfigTest.java index 242e3441..82942190 100644 --- a/aai-els-onap-logging/src/test/java/org/onap/aai/util/AAIApplicationConfigTest.java +++ b/aai-els-onap-logging/src/test/java/org/onap/aai/util/AAIApplicationConfigTest.java @@ -37,28 +37,13 @@ public class AAIApplicationConfigTest { } @Test - public void truststoreTest() throws AAIException { - assertEquals("truststore.jks", AAIApplicationConfig.getTruststore()); - } - - @Test - public void keystoreTest() throws AAIException { - assertEquals("keystore.jks", AAIApplicationConfig.getKeystore()); - } - - @Test - public void getKeystorePkcs12Test() throws AAIException { - assertEquals("keystore.pkcs12", AAIApplicationConfig.getKeystorePkcs12()); - } - - @Test public void getValueWithDefaultTest() throws AAIException { assertEquals("default-value", AAIApplicationConfig.get("non-existing-key", "default-value")); } @Test public void getValueTest() throws AAIException { - assertEquals("certificates", AAIApplicationConfig.get("server.certs.location")); + assertEquals("8446", AAIApplicationConfig.get("server.port")); } @Test @@ -70,10 +55,4 @@ public class AAIApplicationConfigTest { public void getIntValueWithDefaultTest() throws AAIException { assertTrue(9999 == AAIApplicationConfig.getInt("non-existing-key", "9999")); } - - @Test - public void getValueWithReplacementTest() throws AAIException { - assertEquals("/opt/app/aai/etc/auth/aai-client-cert.p12", - AAIApplicationConfig.get("schema.service.ssl.key-store")); - } } diff --git a/aai-els-onap-logging/src/test/resources/application.properties b/aai-els-onap-logging/src/test/resources/application.properties index df8fd64d..bd2fd55f 100644 --- a/aai-els-onap-logging/src/test/resources/application.properties +++ b/aai-els-onap-logging/src/test/resources/application.properties @@ -2,7 +2,7 @@ # ============LICENSE_START======================================================= # org.onap.aai # ================================================================================ -# Copyright © 2017-18 AT&T Intellectual Property. All rights reserved. +# Copyright � 2017-18 AT&T Intellectual Property. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,10 +20,3 @@ spring.application.name=AAI Microservice server.port=8446 server.local.startpath=/opt/app/aai schema.version.list=v10,v11,v12,v13,v14,v15,v16,v17,v18,v19 -server.certs.location=certificates -server.ssl.key-store=keystore.jks -server.ssl.key-store.pkcs12=keystore.pkcs12 -server.ssl.trust-store=truststore.jks -schema.service.ssl.key-store=${server.local.startpath}/etc/auth/aai-client-cert.p12 -schema.service.ssl.trust-store=${server.local.startpath}/etc/auth/aai_keystore.jks - diff --git a/aai-rest/pom.xml b/aai-rest/pom.xml index c59ddbe7..3623f51c 100644 --- a/aai-rest/pom.xml +++ b/aai-rest/pom.xml @@ -46,25 +46,7 @@ </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jetty</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jersey</artifactId> + <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>javax.ws.rs</groupId> @@ -86,11 +68,6 @@ </exclusions> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.onap.aai.aai-common</groupId> <artifactId>aai-els-onap-logging</artifactId> <scope>compile</scope> @@ -101,6 +78,11 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <scope>provided</scope> + </dependency> </dependencies> </project> diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/AAIRestClient.java b/aai-rest/src/main/java/org/onap/aai/restclient/AAIRestClient.java index 3e4eceb4..c4b95090 100644 --- a/aai-rest/src/main/java/org/onap/aai/restclient/AAIRestClient.java +++ b/aai-rest/src/main/java/org/onap/aai/restclient/AAIRestClient.java @@ -36,49 +36,15 @@ import org.springframework.util.MultiValueMap; @ConditionalOnExpression("${aai-rest-client.enabled:false}") public class AAIRestClient extends TwoWaySSLRestClient { - private static Logger logger = LoggerFactory.getLogger(AAIRestClient.class); - @Value("${aai.base.url}") private String baseUrl; - @Value("${aai.ssl.key-store}") - private String keystorePath; - - @Value("${aai.ssl.trust-store}") - private String truststorePath; - - @Value("${aai.ssl.key-store-password}") - private String keystorePassword; - - @Value("${aai.ssl.trust-store-password}") - private String truststorePassword; - @Override public String getBaseUrl() { return baseUrl; } @Override - protected String getKeystorePath() { - return keystorePath; - } - - @Override - protected String getTruststorePath() { - return truststorePath; - } - - @Override - protected char[] getKeystorePassword() { - return keystorePassword.toCharArray(); - } - - @Override - protected char[] getTruststorePassword() { - return truststorePassword.toCharArray(); - } - - @Override public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/JettyPasswordDecoder.java b/aai-rest/src/main/java/org/onap/aai/restclient/JettyPasswordDecoder.java deleted file mode 100644 index 7a1bc110..00000000 --- a/aai-rest/src/main/java/org/onap/aai/restclient/JettyPasswordDecoder.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.restclient; - -import org.eclipse.jetty.util.security.Password; - -public class JettyPasswordDecoder implements PasswordDecoder { - - @Override - public String decode(String input) { - if (input.startsWith("OBF:")) { - return Password.deobfuscate(input); - } - return Password.deobfuscate("OBF:" + input); - } -} diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/NoAuthRestClient.java b/aai-rest/src/main/java/org/onap/aai/restclient/NoAuthRestClient.java index b5585460..09792bbb 100644 --- a/aai-rest/src/main/java/org/onap/aai/restclient/NoAuthRestClient.java +++ b/aai-rest/src/main/java/org/onap/aai/restclient/NoAuthRestClient.java @@ -32,8 +32,6 @@ import org.springframework.web.client.RestTemplate; public abstract class NoAuthRestClient extends RestClient { - private static Logger logger = LoggerFactory.getLogger(NoAuthRestClient.class); - protected RestTemplate restTemplate; @PostConstruct diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/OneWaySSLRestClient.java b/aai-rest/src/main/java/org/onap/aai/restclient/OneWaySSLRestClient.java index 614f6770..80d32137 100644 --- a/aai-rest/src/main/java/org/onap/aai/restclient/OneWaySSLRestClient.java +++ b/aai-rest/src/main/java/org/onap/aai/restclient/OneWaySSLRestClient.java @@ -35,8 +35,6 @@ import org.springframework.web.client.RestTemplate; public abstract class OneWaySSLRestClient extends RestClient { - private static Logger logger = LoggerFactory.getLogger(OneWaySSLRestClient.class); - private RestTemplate restTemplate; @PostConstruct @@ -56,26 +54,19 @@ public abstract class OneWaySSLRestClient extends RestClient { protected HttpClient getClient() throws Exception { - char[] trustStorePassword = getTruststorePassword(); - - String trustStore = getTruststorePath(); - - SSLContext sslContext = SSLContextBuilder.create() - .loadTrustMaterial(ResourceUtils.getFile(trustStore), trustStorePassword).build(); + SSLContext sslContext = SSLContextBuilder.create().build(); HttpClient client = - HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier((s, sslSession) -> true).build(); + HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier((s, sslSession) -> true) + .build(); return client; } - protected abstract String getTruststorePath(); - - protected abstract char[] getTruststorePassword(); - @Override public RestTemplate getRestTemplate() { return restTemplate; } - } diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/PasswordDecoder.java b/aai-rest/src/main/java/org/onap/aai/restclient/PasswordDecoder.java deleted file mode 100644 index a11e2b6c..00000000 --- a/aai-rest/src/main/java/org/onap/aai/restclient/PasswordDecoder.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.restclient; - -public interface PasswordDecoder { - - String decode(String input); -} diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/PropertyPasswordConfiguration.java b/aai-rest/src/main/java/org/onap/aai/restclient/PropertyPasswordConfiguration.java deleted file mode 100644 index a6028f9c..00000000 --- a/aai-rest/src/main/java/org/onap/aai/restclient/PropertyPasswordConfiguration.java +++ /dev/null @@ -1,161 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.restclient; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.EnumerablePropertySource; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.PropertySource; - -public class PropertyPasswordConfiguration implements ApplicationContextInitializer<ConfigurableApplicationContext> { - - private static final Pattern decodePasswordPattern = Pattern.compile("password\\((.*?)\\)"); - private PasswordDecoder passwordDecoder = new JettyPasswordDecoder(); - private static final Logger logger = LoggerFactory.getLogger(PropertyPasswordConfiguration.class.getName()); - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - ConfigurableEnvironment environment = applicationContext.getEnvironment(); - String certPath = environment.getProperty("server.certs.location"); - File passwordFile = null; - File passphrasesFile = null; - InputStream passwordStream = null; - InputStream passphrasesStream = null; - Map<String, Object> sslProps = new LinkedHashMap<>(); - - // Override the passwords from application.properties if we find AAF certman files - if (certPath != null) { - try { - passwordFile = new File(certPath + ".password"); - passwordStream = new FileInputStream(passwordFile); - - if (passwordStream != null) { - String keystorePassword = null; - - keystorePassword = IOUtils.toString(passwordStream, Charset.defaultCharset()); - if (keystorePassword != null) { - keystorePassword = keystorePassword.trim(); - } - sslProps.put("server.ssl.key-store-password", keystorePassword); - sslProps.put("schema.service.ssl.key-store-password", keystorePassword); - sslProps.put("validation.service.ssl.key-store-password", keystorePassword); - } else { - logger.info("Not using AAF Certman password file"); - } - } catch (IOException e) { - logger.warn("Not using AAF Certman password file, e=" + e.getMessage()); - } finally { - if (passwordStream != null) { - try { - passwordStream.close(); - } catch (Exception e) { - } - } - } - try { - passphrasesFile = new File(certPath + ".passphrases"); - passphrasesStream = new FileInputStream(passphrasesFile); - - if (passphrasesStream != null) { - String truststorePassword = null; - Properties passphrasesProps = new Properties(); - passphrasesProps.load(passphrasesStream); - truststorePassword = passphrasesProps.getProperty("cadi_truststore_password"); - if (truststorePassword != null) { - truststorePassword = truststorePassword.trim(); - } - sslProps.put("server.ssl.trust-store-password", truststorePassword); - sslProps.put("schema.service.ssl.trust-store-password", truststorePassword); - sslProps.put("validation.service.ssl.trust-store-password", truststorePassword); - } else { - logger.info("Not using AAF Certman passphrases file"); - } - } catch (IOException e) { - logger.warn("Not using AAF Certman passphrases file, e=" + e.getMessage()); - } finally { - if (passphrasesStream != null) { - try { - passphrasesStream.close(); - } catch (Exception e) { - } - } - } - } - for (PropertySource<?> propertySource : environment.getPropertySources()) { - Map<String, Object> propertyOverrides = new LinkedHashMap<>(); - decodePasswords(propertySource, propertyOverrides); - if (!propertyOverrides.isEmpty()) { - PropertySource<?> decodedProperties = - new MapPropertySource("decoded " + propertySource.getName(), propertyOverrides); - environment.getPropertySources().addBefore(propertySource.getName(), decodedProperties); - } - - } - if (!sslProps.isEmpty()) { - logger.info("Using AAF Certman files"); - PropertySource<?> additionalProperties = new MapPropertySource("additionalProperties", sslProps); - environment.getPropertySources().addFirst(additionalProperties); - } - } - - private void decodePasswords(PropertySource<?> source, Map<String, Object> propertyOverrides) { - if (source instanceof EnumerablePropertySource) { - EnumerablePropertySource<?> enumerablePropertySource = (EnumerablePropertySource<?>) source; - for (String key : enumerablePropertySource.getPropertyNames()) { - Object rawValue = source.getProperty(key); - if (rawValue instanceof String) { - String decodedValue = decodePasswordsInString((String) rawValue); - propertyOverrides.put(key, decodedValue); - } - } - } - } - - private String decodePasswordsInString(String input) { - if (input == null) - return null; - StringBuffer output = new StringBuffer(); - Matcher matcher = decodePasswordPattern.matcher(input); - while (matcher.find()) { - String replacement = passwordDecoder.decode(matcher.group(1)); - matcher.appendReplacement(output, replacement); - } - matcher.appendTail(output); - return output.toString(); - } - -} diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/RestClient.java b/aai-rest/src/main/java/org/onap/aai/restclient/RestClient.java index 44b1fe44..1b4a3d94 100644 --- a/aai-rest/src/main/java/org/onap/aai/restclient/RestClient.java +++ b/aai-rest/src/main/java/org/onap/aai/restclient/RestClient.java @@ -133,9 +133,9 @@ public abstract class RestClient { HttpEntity<String> httpEntity; log.debug("Headers: " + headers.toString()); if (body == null) { - httpEntity = new HttpEntity(getHeaders(headers)); + httpEntity = new HttpEntity<String>(getHeaders(headers)); } else { - httpEntity = new HttpEntity(body, getHeaders(headers)); + httpEntity = new HttpEntity<String>(body, getHeaders(headers)); } String url = getBaseUrl() + uri; return getRestTemplate().exchange(url, method, httpEntity, Resource.class); diff --git a/aai-rest/src/main/java/org/onap/aai/restclient/TwoWaySSLRestClient.java b/aai-rest/src/main/java/org/onap/aai/restclient/TwoWaySSLRestClient.java index 5ea4fc33..7d759107 100644 --- a/aai-rest/src/main/java/org/onap/aai/restclient/TwoWaySSLRestClient.java +++ b/aai-rest/src/main/java/org/onap/aai/restclient/TwoWaySSLRestClient.java @@ -20,11 +20,6 @@ package org.onap.aai.restclient; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.security.KeyStore; - import javax.annotation.PostConstruct; import javax.net.ssl.SSLContext; @@ -32,16 +27,11 @@ import org.apache.http.client.HttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContextBuilder; import org.onap.aai.aailog.filter.RestClientLoggingInterceptor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.util.ResourceUtils; import org.springframework.web.client.RestTemplate; public abstract class TwoWaySSLRestClient extends RestClient { - private static Logger logger = LoggerFactory.getLogger(TwoWaySSLRestClient.class); - private RestTemplate restTemplate; @PostConstruct @@ -60,39 +50,18 @@ public abstract class TwoWaySSLRestClient extends RestClient { protected HttpClient getClient() throws Exception { - char[] keyStorePassword = getKeystorePassword(); - char[] trustStorePassword = getTruststorePassword(); - - String keyStore = getKeystorePath(); - String trustStore = getTruststorePath(); - SSLContext sslContext = - SSLContextBuilder.create().loadKeyMaterial(loadPfx(keyStore, keyStorePassword), keyStorePassword) - .loadTrustMaterial(ResourceUtils.getFile(trustStore), trustStorePassword).build(); + SSLContextBuilder.create().build(); HttpClient client = - HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier((s, sslSession) -> true).build(); + HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier((s, sslSession) -> true) + .build(); return client; } - private KeyStore loadPfx(String file, char[] password) throws Exception { - KeyStore keyStore = KeyStore.getInstance("PKCS12"); - File key = ResourceUtils.getFile(file); - try (InputStream in = new FileInputStream(key)) { - keyStore.load(in, password); - } - return keyStore; - } - - protected abstract String getKeystorePath(); - - protected abstract String getTruststorePath(); - - protected abstract char[] getTruststorePassword(); - - protected abstract char[] getKeystorePassword(); - @Override public RestTemplate getRestTemplate() { return restTemplate; diff --git a/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/JsonSchemaProvider.java b/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/JsonSchemaProvider.java index fba6e0fd..5647d6df 100644 --- a/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/JsonSchemaProvider.java +++ b/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/JsonSchemaProvider.java @@ -61,9 +61,7 @@ public class JsonSchemaProvider implements SchemaProvider { public JsonSchemaProvider(JsonSchemaProviderConfig config) { this.config = config; - SecureClientHttpRequestFactory fac = new SecureClientHttpRequestFactory(config); - fac.setBufferRequestBody(false); - this.restTemplate = new RestTemplate(fac); + this.restTemplate = new RestTemplate(); } @Override diff --git a/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/SecureClientHttpRequestFactory.java b/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/SecureClientHttpRequestFactory.java deleted file mode 100644 index 3f17c9be..00000000 --- a/aai-schema-abstraction/src/main/java/org/onap/aai/schemaif/json/SecureClientHttpRequestFactory.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.aai.schemaif.json; - -import java.io.FileInputStream; -import java.io.IOException; -import java.net.HttpURLConnection; -import java.security.KeyStore; -import java.security.cert.X509Certificate; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import org.springframework.http.client.SimpleClientHttpRequestFactory; - -public class SecureClientHttpRequestFactory extends SimpleClientHttpRequestFactory { - - private static final String SSL_PROTOCOL = "TLS"; - private static final String KEYSTORE_ALGORITHM = "SunX509"; - private static final String KEYSTORE_TYPE = "PKCS12"; - private JsonSchemaProviderConfig config; - - public SecureClientHttpRequestFactory(JsonSchemaProviderConfig config) { - super(); - this.config = config; - } - - @Override - protected void prepareConnection(final HttpURLConnection connection, final String httpMethod) throws IOException { - if (connection instanceof HttpsURLConnection) { - ((HttpsURLConnection) connection).setSSLSocketFactory(getSSLContext().getSocketFactory()); - ((HttpsURLConnection) connection).setHostnameVerifier(new HostnameVerifier() { - @Override - public boolean verify(String str, SSLSession sslSession) { - return true; - } - }); - } else { - - throw new IOException(); - } - super.prepareConnection(connection, httpMethod); - } - - protected SSLContext getSSLContext() throws IOException { - try { - TrustManager[] trustAllCerts = null; - - // We aren't validating certificates, so create a trust manager that - // does - // not validate certificate chains. - trustAllCerts = new TrustManager[] {new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { - return null; - } - - public void checkClientTrusted(X509Certificate[] certs, String authType) { - } - - public void checkServerTrusted(X509Certificate[] certs, String authType) { - } - }}; - - SSLContext ctx = SSLContext.getInstance(SSL_PROTOCOL); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KEYSTORE_ALGORITHM); - KeyStore ks = KeyStore.getInstance(KEYSTORE_TYPE); - - char[] pwd = null; - if (config.getSchemaServiceCertPwd() != null) { - pwd = config.getSchemaServiceCertPwd().toCharArray(); - } - - if (config.getSchemaServiceCertFile() != null) { - try (FileInputStream fin = new FileInputStream(config.getSchemaServiceCertFile())) { - // Load the keystore and initialize the key manager factory. - ks.load(fin, pwd); - kmf.init(ks, pwd); - - ctx.init(kmf.getKeyManagers(), trustAllCerts, null); - } - } else { - ctx.init(null, trustAllCerts, null); - } - - return ctx; - } catch (Exception e) { - throw new IOException("Problem with getting the SSL Context::" + e.getMessage(), e); - } - - } - -} diff --git a/aai-schema-ingest/pom.xml b/aai-schema-ingest/pom.xml index f8ffe0c7..c9d19d12 100644 --- a/aai-schema-ingest/pom.xml +++ b/aai-schema-ingest/pom.xml @@ -106,10 +106,6 @@ limitations under the License. <artifactId>spring-webmvc</artifactId> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java index 1f04bff1..33a50c44 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java @@ -24,8 +24,6 @@ import java.util.Collections; import java.util.Map; import java.util.UUID; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -33,33 +31,15 @@ import org.springframework.util.MultiValueMap; public class SchemaServiceOneWayClient extends OneWaySSLRestClient { - private static Logger logger = LoggerFactory.getLogger(SchemaServiceOneWayClient.class); - @Value("${schema.service.base.url}") private String baseUrl; - @Value("${schema.service.ssl.trust-store}") - private String truststorePath; - - @Value("${schema.service.ssl.trust-store-password}") - private String truststorePassword; - @Override public String getBaseUrl() { return baseUrl; } @Override - protected String getTruststorePath() { - return truststorePath; - } - - @Override - protected char[] getTruststorePassword() { - return truststorePassword.toCharArray(); - } - - @Override public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { HttpHeaders httpHeaders = new HttpHeaders(); diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java index f7bdf6d7..44ad9a37 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java @@ -34,49 +34,16 @@ import org.springframework.http.MediaType; import org.springframework.util.MultiValueMap; public class SchemaServiceRestClient extends TwoWaySSLRestClient { - private static Logger logger = LoggerFactory.getLogger(SchemaServiceRestClient.class); @Value("${schema.service.base.url}") private String baseUrl; - @Value("${schema.service.ssl.key-store}") - private String keystorePath; - - @Value("${schema.service.ssl.trust-store}") - private String truststorePath; - - @Value("${schema.service.ssl.key-store-password}") - private String keystorePassword; - - @Value("${schema.service.ssl.trust-store-password}") - private String truststorePassword; - @Override public String getBaseUrl() { return baseUrl; } @Override - protected String getKeystorePath() { - return keystorePath; - } - - @Override - protected String getTruststorePath() { - return truststorePath; - } - - @Override - protected char[] getKeystorePassword() { - return keystorePassword.toCharArray(); - } - - @Override - protected char[] getTruststorePassword() { - return truststorePassword.toCharArray(); - } - - @Override public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { HttpHeaders httpHeaders = new HttpHeaders(); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java index 743fe70d..96627c2c 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java @@ -35,8 +35,7 @@ import org.springframework.test.context.TestPropertySource; @Disabled @TestPropertySource(locations = "/schemaService/schema-service-rest.properties") @ContextConfiguration( - classes = {RestClientFactoryConfiguration.class, SchemaServiceRestClient.class, RestClientFactory.class, - PropertyPasswordConfiguration.class}) + classes = {RestClientFactoryConfiguration.class, SchemaServiceRestClient.class, RestClientFactory.class}) @SpringBootTest public class SchemaRestClientTest { |