From 43e32e7b052600fc7ebd675a7a6b32bab5b6f992 Mon Sep 17 00:00:00 2001 From: awudzins Date: Tue, 18 Feb 2020 13:13:12 +0100 Subject: Add configuration reading mechanism for CMP Server Issue-ID: AAF-997 Signed-off-by: adamwudzinski Change-Id: I66ca48b019544f970fb1db18236a093cae28b2aa --- .../configuration/CmpServersConfig.java | 43 +++++++++++++ .../configuration/CmpServersConfigLoader.java | 60 ++++++++++++++++++ .../configuration/model/Authentication.java | 44 ++++++++++++++ .../certification/configuration/model/CaMode.java | 25 ++++++++ .../configuration/model/CmpServers.java | 37 +++++++++++ .../configuration/model/Cmpv2Server.java | 71 ++++++++++++++++++++++ certService/src/main/resources/cmpServers.json | 24 ++++++++ .../configuration/CmpServersConfigTest.java | 47 ++++++++++++++ certService/src/test/resources/cmpServers.json | 24 ++++++++ 9 files changed, 375 insertions(+) create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfig.java create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoader.java create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Authentication.java create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CaMode.java create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CmpServers.java create mode 100644 certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Cmpv2Server.java create mode 100644 certService/src/main/resources/cmpServers.json create mode 100644 certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java create mode 100644 certService/src/test/resources/cmpServers.json (limited to 'certService/src') diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfig.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfig.java new file mode 100644 index 00000000..105b10e7 --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfig.java @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration; + +import java.util.Collections; +import java.util.List; +import javax.annotation.PostConstruct; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class CmpServersConfig { + + private static final String CMP_SERVERS_CONFIG_FILENAME = "cmpServers.json"; + private List cmpServers; + + @PostConstruct + private void loadConfiguration() { + cmpServers = Collections.unmodifiableList(new CmpServersConfigLoader().load(CMP_SERVERS_CONFIG_FILENAME)); + } + + public List getCmpServers() { + return cmpServers; + } +} diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoader.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoader.java new file mode 100644 index 00000000..b31fbcad --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoader.java @@ -0,0 +1,60 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import org.onap.aaf.certservice.certification.CertificationModelFactory; +import org.onap.aaf.certservice.certification.configuration.model.CmpServers; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class CmpServersConfigLoader { + private static final Logger LOGGER = LoggerFactory.getLogger(CertificationModelFactory.class); + + List load(String path) { + List result = new ArrayList<>(); + try { + result = loadConfigFromFile(path).getCmpv2Servers(); + } catch (FileNotFoundException e) { + LOGGER.error("CMP Servers configuration file not found: ", e); + } catch (IOException e) { + LOGGER.error("Exception occurred during CMP Servers configuration loading: ", e); + } + return result; + } + + private CmpServers loadConfigFromFile(String path) throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + URL resource = getClass().getClassLoader().getResource(path); + if (resource == null) { + throw new FileNotFoundException(); + } + String configFilePath = resource.getFile(); + return objectMapper.readValue(new File(configFilePath), CmpServers.class); + } +} diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Authentication.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Authentication.java new file mode 100644 index 00000000..b689eb54 --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Authentication.java @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration.model; + +public class Authentication { + + private String iak; + private String rv; + + public String getIak() { + return iak; + } + + public void setIak(String iak) { + this.iak = iak; + } + + public String getRv() { + return rv; + } + + public void setRv(String rv) { + this.rv = rv; + } + +} diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CaMode.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CaMode.java new file mode 100644 index 00000000..f226bc58 --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CaMode.java @@ -0,0 +1,25 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration.model; + +public enum CaMode { + RA, CLIENT +} diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CmpServers.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CmpServers.java new file mode 100644 index 00000000..7fac1887 --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/CmpServers.java @@ -0,0 +1,37 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration.model; + +import java.util.List; + +public class CmpServers { + + private List cmpv2Servers; + + public List getCmpv2Servers() { + return cmpv2Servers; + } + + public void setCmpv2Servers(List cmpv2Servers) { + this.cmpv2Servers = cmpv2Servers; + } + +} diff --git a/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Cmpv2Server.java b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Cmpv2Server.java new file mode 100644 index 00000000..0ee91cd4 --- /dev/null +++ b/certService/src/main/java/org/onap/aaf/certservice/certification/configuration/model/Cmpv2Server.java @@ -0,0 +1,71 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration.model; + +public class Cmpv2Server { + + private Authentication authentication; + private CaMode caMode; + private String caName; + private String issuerDN; + private String url; + + public Authentication getAuthentication() { + return authentication; + } + + public void setAuthentication(Authentication authentication) { + this.authentication = authentication; + } + + public CaMode getCaMode() { + return caMode; + } + + public void setCaMode(CaMode caMode) { + this.caMode = caMode; + } + + public String getCaName() { + return caName; + } + + public void setCaName(String caName) { + this.caName = caName; + } + + public String getIssuerDN() { + return issuerDN; + } + + public void setIssuerDN(String issuerDN) { + this.issuerDN = issuerDN; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + +} diff --git a/certService/src/main/resources/cmpServers.json b/certService/src/main/resources/cmpServers.json new file mode 100644 index 00000000..ee9e72b9 --- /dev/null +++ b/certService/src/main/resources/cmpServers.json @@ -0,0 +1,24 @@ +{ + "cmpv2Servers": [ + { + "caName": "TEST", + "url": "http://127.0.0.1/ejbca/publicweb/cmp/cmp", + "issuerDN": "CN=ManagementCA", + "caMode": "CLIENT", + "authentication": { + "iak": "xxx", + "rv": "yyy" + } + }, + { + "caName": "TEST2", + "url": "http://127.0.0.1/ejbca/publicweb/cmp/cmpRA", + "issuerDN": "CN=ManagementCA2", + "caMode": "RA", + "authentication": { + "iak": "xxx", + "rv": "yyy" + } + } + ] +} \ No newline at end of file diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java new file mode 100644 index 00000000..4c9c5f66 --- /dev/null +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java @@ -0,0 +1,47 @@ +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2020 Nokia. 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.aaf.certservice.certification.configuration; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.onap.aaf.certservice.CertServiceApplication; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = CertServiceApplication.class) +class CmpServersConfigTest { + + @Autowired + private CmpServersConfig cmpServersConfig; + + @Test + public void shouldLoadCmpServersConfig() { + // Then + assertThat(cmpServersConfig.getCmpServers()).isNotNull(); + assertThat(cmpServersConfig.getCmpServers().size()).isEqualTo(2); + assertThat(cmpServersConfig.getCmpServers().get(0).getCaName()).isEqualTo("TEST"); + assertThat(cmpServersConfig.getCmpServers().get(1).getCaName()).isEqualTo("TEST2"); + } +} \ No newline at end of file diff --git a/certService/src/test/resources/cmpServers.json b/certService/src/test/resources/cmpServers.json new file mode 100644 index 00000000..ee9e72b9 --- /dev/null +++ b/certService/src/test/resources/cmpServers.json @@ -0,0 +1,24 @@ +{ + "cmpv2Servers": [ + { + "caName": "TEST", + "url": "http://127.0.0.1/ejbca/publicweb/cmp/cmp", + "issuerDN": "CN=ManagementCA", + "caMode": "CLIENT", + "authentication": { + "iak": "xxx", + "rv": "yyy" + } + }, + { + "caName": "TEST2", + "url": "http://127.0.0.1/ejbca/publicweb/cmp/cmpRA", + "issuerDN": "CN=ManagementCA2", + "caMode": "RA", + "authentication": { + "iak": "xxx", + "rv": "yyy" + } + } + ] +} \ No newline at end of file -- cgit 1.2.3-korg