From 882ed2ea323347eade5823dd5c360a3c3a249dee Mon Sep 17 00:00:00 2001
From: OZG-Cloud Team <noreply@ozg-sh.de>
Date: Thu, 20 Apr 2023 09:46:48 +0200
Subject: [PATCH] OZG-3136 add configuration parameter

---
 .gitignore                                    |  1 +
 ...itional-spring-configuration-metadata.json | 27 +++++++++++++++----
 xta-adapter/readme.md                         |  8 ++++--
 .../xta/WsHeaderAddingInterceptor.java        | 15 +++++++----
 .../ozgcloud/eingang/xta/XtaProperties.java   |  7 ++---
 .../src/main/resources/application.yml        |  2 +-
 .../eingang/xta/XtaRemoteServiceITCase.java   |  3 +--
 .../src/test/resources/application-itcase.yml |  3 ++-
 8 files changed, 47 insertions(+), 19 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5224ca6b..06661674 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@ build/
 .vscode/
 
 application-sec.yml
+xta-adapter/KOP_SH_KIEL_DEV.p12
diff --git a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index d135ce00..625980f8 100644
--- a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -1,5 +1,22 @@
-{"properties": [{
-  "name": "ozgcloud.xta.actions.status-list",
-  "type": "java.lang.String",
-  "description": "A description for 'ozgcloud.xta.actions.status-list'"
-}]}
\ No newline at end of file
+{"properties": [
+  {
+    "name": "ozgcloud.xta.actions.status-list",
+    "type": "java.lang.String",
+    "description": "A description for 'ozgcloud.xta.actions.status-list'"
+  },
+  {
+    "name": "ozgcloud.xta.identifier",
+    "type": "java.lang.String",
+    "description": "XTA Identifier for SOAP Request Header (f.e. 'gae:firstname.lastname@mgm-tp.com')"
+  },
+  {
+    "name": "ozgcloud.xta.keystore.file",
+    "type": "java.lang.String",
+    "description": "Location of the keyfile for xta accesss"
+  },
+  {
+    "name": "ozgcloud.xta.keystore.password",
+    "type": "java.lang.String",
+    "description": "Password of the keyfile for xta accesss"
+  }
+]}
\ No newline at end of file
diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md
index e5541a8c..7b8043c1 100644
--- a/xta-adapter/readme.md
+++ b/xta-adapter/readme.md
@@ -10,12 +10,16 @@ ozgcloud:
       
 Den Dienst dann mit dem Spring-Profile 'sec' starten.
 
-# Ceritifcade chain
+# Certificate chain
 
 lokal das Root CA in keystore laden:
 
     sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt
-    
+   
+Alternativ p12 Datei lokal erzeugen:
+
+    keytool -importkeystore -srckeystore KOP_SH_KIEL_DEV.pfx -srcstoretype pkcs12 -destkeystore KOP_SH_KIEL_DEV2.p12 -deststoretype PKCS12
+
 # Port forwarding
 Um eine Verbindung zum Nachrichtenbroker aufbauen zu können, muss diese über den Hetzner-Server geroutet werden:
 
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java
index 9bc9f906..113f4f97 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java
@@ -1,9 +1,6 @@
 package de.ozgcloud.eingang.xta;
 
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.JAXBElement;
-import jakarta.xml.bind.JAXBException;
-
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.ws.client.WebServiceClientException;
 import org.springframework.ws.client.support.interceptor.ClientInterceptor;
@@ -14,10 +11,18 @@ import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException;
 import eu.osci.ws._2014._10.transport.OriginatorsType;
 import eu.osci.ws._2014._10.transport.PartyIdentifierType;
 import eu.osci.ws._2014._10.transport.PartyType;
+import jakarta.validation.Valid;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.JAXBElement;
+import jakarta.xml.bind.JAXBException;
 
 @Component
 class WsHeaderAddingInterceptor implements ClientInterceptor {
 
+	@Autowired
+	@Valid
+	private XtaProperties properties;
+
 	@Override
 	public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
 		var soapMessage = (SoapMessage) messageContext.getRequest();
@@ -39,7 +44,7 @@ class WsHeaderAddingInterceptor implements ClientInterceptor {
 
 		PartyType partyType = new PartyType();
 		PartyIdentifierType identifier = new PartyIdentifierType();
-		identifier.setValue("gae:noreply@ozg-sh.de");
+		identifier.setValue(properties.getIdentifier());
 		partyType.setIdentifier(identifier);
 
 		var origin = new OriginatorsType();
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java
index d2fc4044..4f06606c 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java
@@ -3,15 +3,14 @@ package de.ozgcloud.eingang.xta;
 import java.math.BigInteger;
 import java.net.URI;
 
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.Resource;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.annotation.Validated;
 
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -30,6 +29,8 @@ class XtaProperties {
 
 	private KeyStore keyStore;
 	private Actions actions;
+
+	private String identifier;
 }
 
 @Validated
diff --git a/xta-adapter/src/main/resources/application.yml b/xta-adapter/src/main/resources/application.yml
index 51517476..0755b52a 100644
--- a/xta-adapter/src/main/resources/application.yml
+++ b/xta-adapter/src/main/resources/application.yml
@@ -12,4 +12,4 @@ ozgcloud:
       type: PKCS12
     actions:
       status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"
-      fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"
\ No newline at end of file
+      fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
index f805f22c..d79c47c4 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
@@ -2,8 +2,6 @@ package de.ozgcloud.eingang.xta;
 
 import static org.assertj.core.api.Assertions.*;
 
-import jakarta.validation.Valid;
-
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -12,6 +10,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 
 import de.itvsh.kop.eingangsadapter.Application;
+import jakarta.validation.Valid;
 
 @Disabled("real live test - do only activate for manual testing")
 @ActiveProfiles({ "itcase", "local" })
diff --git a/xta-adapter/src/test/resources/application-itcase.yml b/xta-adapter/src/test/resources/application-itcase.yml
index 3507852f..fa5c5d86 100644
--- a/xta-adapter/src/test/resources/application-itcase.yml
+++ b/xta-adapter/src/test/resources/application-itcase.yml
@@ -2,4 +2,5 @@ ozgcloud:
   xta:
     keystore:
       file: classpath:xtaTestStore.p12
-      password: <geheim>
\ No newline at end of file
+      password: <geheim>
+    identifier: gae:noreply@ozg-sh.de
\ No newline at end of file
-- 
GitLab