diff --git a/.gitignore b/.gitignore index 5224ca6b7f08eb7734745f69e8bd1cf18cc2eb9b..066616748b31fb0e83632325c7ed857b30402e1b 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 d135ce00a6e4d882a6ebdb920769d21387a8cff7..625980f8393f69927238961461f815b9fe835042 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 e5541a8c2d6463b3fe7f426ba12f5e3d22d25661..7b8043c167847b60c3b1a7d160cdac60203f8586 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 9bc9f906346a3bb6b893bedb7b5c1ed416c32175..113f4f976d8d2db64c2473cf65d1cd1b48b9ba64 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 d2fc40448ce2faf23b698ac43d97e911c841aab1..4f06606c7e0c450823f6221ef46e4bbd163225bf 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 51517476824eed83eee84c8b59e888dbae89251b..0755b52ae97ab62272675394cab490d3601747d6 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 f805f22c9c6f8a3ece0a20835402618178812d04..d79c47c4ff74ae2fb9e0167e2b1a13be204ac66a 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 3507852f0b2455e004e8ae452e19f9b5de411218..fa5c5d86fbded8b86eaf4361fee63b6e16e199c1 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