AS4 Receipt Service Dokumentation

Der Receipt Service validiert die Eingangsbestätigung des Marktpartners und erstellt Eingangsbestätigungen als Response für erhaltene AS Nachrichten.

Hardware Anforderungen

Eine Service-Instanz erfordert mindestens 1024 MB RAM.

Wir empfehlen 0,6 CPU-Kerne je Instanz.

Logs werden auf die Festplatte geschrieben, entsprechend muss genügend Speicherplatz vorhanden sein.

Abhängigkeiten

Der Service greift auf einen Message-Broker zu, um Nachrichten zu empfangen und zu versenden.

Einfache Konfiguration der as4-receipt-service.properties

Die Kommunikation zwischen den verschiedene AS4 Services erfolgt über einen Message-Broker.

#=== RabbitMQ Con
rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=guest

AMQP Routing Konfiguration

Falls Sie das Standard Routing nutzen, muss das Routing nicht weiter konfiguriert werden. Wenn Sie Ihr Routing anpassen möchten, lesen Sie die folgende Dokumentation.

Der Outbound Receipt

Über diesen Consumer werden eingehende Receipts vom Crypto Operations in der Queue as4.receipt.parse.default entgegengenommen, welche der AS4 Outbound Sender vom Marktpartner erhalten hat und diesen an den Crypto Operations weitergeleitet hat.

receiptParseExchangeName=as4.receipt.parse

Der Inbound Receipt

Dieser Consumer empfängt über die Queue as4.receipt.create.default die AS4 Nachricht (in diesem Kontext auch als Business Message bekannt) vom Crypto Operations, welcher diese vom AS4 Inbound Endpoint erhalten hat, um dafür eine Empfangsbestätigung zu generieren.

receiptCreateExchangeName=as4.receipt.create

Versenden der Empfangsbestätigung zur Persistierung

Mit dem Producer wird die vom AS4 Outbound Sender empfangene Bestätigung an den AS4 Message Service zum Speichern versendet. Der Name der Queue ist as4.receipt.default.

receiptExchangeName=as4.receipt

Versenden der Business Message

Der Producer versendet die vom Marktpartner eingegangene AS4 Nachricht als Business Message zum Speichern an den AS4 Message Service. Die Queue heißt as4.messages.default.

businessMessageExchangeName=as4.messages

Signieren der Empfangsbestätigung

Der Producer versendet über as4.sign.default die erstellte Bestätigung an den Crypto Operations zwecks Anbringung der Signatur.

createdReceiptExchangeName=as4.sign

Der Marktpartner bestätigt unsere Adressänderung

Mit dem Pathswitch Provider wird die Annahme der Adressänderung des Tenants vom Marktpartner bestätigt. Diese Bestätigung geht über die Queue as4.outbound.pathswitch.default an den AS4 Address Service.

pathswitchConfirmationExchangeName=as4.outbound.pathswitch

Validierung

Um zu einer eingehenden Nachricht ein Receipt zu erstellen, wird die Nachricht vorerst validiert. Zur Validierung sind die folgenden Parameter erforderlich. Wichtig ist hier, für die Variable expectedSystems die Receiver, also die Mandanten selbst einzutragen, damit geprüft werden kann, ob der Marktpartner auch an den richtigen Mandanten geantwortet hat. Um die Validierung auf den Receiver/Mandanten zu überspringen, kann der Wert leer gelassen, oder die Property entfernt werden.

Die weiteren Prüfungskategorien sind AS4 Protokoll spezifisch und sollten von einem Fachmann verändert werden. ServiceId gibt dabei den Service aus dem Header der AS4 Message an und ActionId die Action aus dem Header.

expectedSystems=9907647000008,9903111000003,9900051000002

expectedElectricityServiceIds=https://www.bdew.de/as4/communication/services/MP,https://www.bdew.de/as4/communication/services/pathSwitch,http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/test
expectedElectricityActionIds=http://docs.oasis-open.org/ebxml-msg/as4/200902/action,https://www.bdew.de/as4/communication/actions/requestSwitch,https://www.bdew.de/as4/communication/actions/confirmSwitch,http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/test

expectedGasServiceIds=A02
expectedGasActionIds=http://docs.oasis-open.org/ebxml-msg/as4/200902/action,http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/test

Neben den fachlichen Paramtern, wird ebenfalls validiert, ob das Receipt einen negativen StatusCode hat, oder Probleme bei der Signierung, Ver- und Entschlüsselung vorliegen. Das Receipt wird mit der jeweiligen Fehlermeldung an den as4-message-service gesendet und dort persistiert. Vorliegende Fehler lassen sich im Nachrichtenmonitor einsehen.

Validierung Relation

Wenn Sie möchten, dass unbestätigte Beziehungen per negativer Receipt abgelehnt werden sollen, konfigurieren Sie folgende Property: check-relation=true.

Um eine Beziehung zu validieren, muss außerdem ein API-Aufruf beim as4-Adress-Service erfolgen, um zu prüfen, ob die Beziehung bereits bestätigt ist oder nicht. Standardmäßig ist AddressServiceUrl leer.

addressServiceUrl=http://as4-address-service:8080/aep-as4-address-service

Beziehung automatisch bestätigen

Es ist möglich eine bisher unbekannte oder unbestätigte Beziehung automatisch während der Nachrichtenverarbeitung (Inbound außer ping/pathswitch) zu bestätigen. Nachdem die Beziehung bestätigt wurde, können Nachrichten dieser Beziehung verarbeitet werden.

Dieses Feature kann aktiviert werden, indem der folgende Parameter auf „true“ gesetzt wird. Standardmäßig ist er auf „false“ gesetzt.

autoConfirmRelation=true

Um eine Beziehung automatisch zu bestätigen, muss außerdem ein API-Aufruf beim as4-Adress-Service erfolgen, um zu prüfen, ob die Beziehung bereits bestätigt ist oder nicht. Standardmäßig ist AddressServiceUrl leer.

addressServiceUrl=http://as4-address-service:8080/aep-as4-address-service

Um eine Beziehung automatisch zu bestätigen, wird eine Warteschlange verwendet und die folgende Konfiguration muss hinzugefügt werden.

relationCreateExchangeName=as4.relation.create
relationCreateHeaderName=default
relationCreateHeaderValues=

Routing Konfiguration der as4-receipt-service.properties

Für die Aktivierung des Routings müssen der headerName und die headerValues gesetzt werden. Den headerName kann man sich als Filterkategorie vorstellen, während die headerValues den zu filternden Werten entsprechen. Nachrichten mit Werten, die nicht explizit als headerValues aufgelistet sind, laufen weiterhin über die default Route.

Als headerName werden folgende Parameter angeboten:

  • tenant: ILN Nummer des Senders
  • partner: ILN Nummer des Empfängers.
  • sector: GAS, ELECTRICITY

Es können mehrere Werte kommasepariert angegeben werden.

receiptExchangeName=as4.receipt
receiptHeaderName=tenant
receiptHeaderValues=
businessMessageExchangeName=as4.messages
businessMessageHeaderName=tenant
businessMessageHeaderValues=
createdReceiptExchangeName=as4.sign
createdReceiptHeaderName=tenant
createdReceiptHeaderValues=
pathswitchConfirmationExchangeName=as4.outbound.pathswitch
pathswitchConfirmationHeaderName=tenant
pathswitchConfirmationHeaderValues=

Wird der Producer für das Routing konfiguriert muss natürlich auch die Gegenstelle dafür eingerichtet werden. Dem Consumer wird über die Gruppe der Wert (Value) aus der HeaderValues Liste zugewiesen nach welchem gefiltert werden soll. Bitte den Default Wert nur ändern, wenn Routing verwendet werden soll.

receiptParseExchangeName=as4.receipt.parse
receiptParseGroup=default
receiptCreateExchangeName=as4.receipt.create
receiptCreateGroup=default

Max Concurrency - Parallelität

Für jeden Consumer ist es möglich die Eigenschaft max-concurrency zu setzen. Diese definiert die maximale Anzahl von gleichzeitigen Verarbeitungsthreads, die für einen Consumer gestartet werden können. Der Default steht für jeden Consumer auf 50.

receiptParseMaxConcurrency=50
receiptCreateMaxConcurrency=50

Keycloak

Bei Bedarf kann die REST-API per Keycloak abgesichert werden.

Zip Payload

Die Nutzlast/der Anhang im eingehenden Fluss wird genau dann gezippt, wenn zipPayload=true konfiguriert ist (Standardwert: false).

zipPayload=false

Falls dieses Feature genutzt wird, muss dies mit der technischen Mako abgestimmt werden. Falls Sie die B2B nutzen, können Sie die gleiche Property am B2B-Message-Service konfigurieren.

REST API Dokumentation

Die API bietet Server-Health Informationen an.

Der Port lässt sich über folgende Property konfigurieren: server.port=8080

Swagger

Die Beschreibung der REST API lässt sich, im Fall einer Docker Installation, unter

http://host.docker.internal:8095/aep-as4-receipt-service/swagger-ui/index.html

oder unter

http://localhost:8080/aep-as4-receipt-service/swagger-ui/index.html

finden.

Anhang: Gesamtkonfiguration

Folgende Konfiguration reicht in einem Standard-System aus: application.properties:

#=== Rabbitmq Configuration ===#
rabbitmq.host=rabbitmq3
rabbitmq.port=5672
rabbitmq.username=guest
rabbitmq.password=${RABBITMQ_PASSWORD}

Allgemeine Hinweise zur Konfiguration finden Sie hier.

View Me   Edit Me