Dette dokument beskriver projektstrukturen i Fravalg af Genoplivning Ved Hjertestop Register-service og har derudover til formål at gøre det muligt for andre end den oprindelige leverandør at overtage videreudvikling af projektet. Dokumentet bygger videre på informationen beskrevet i de andre dokumenter tilhørende projektet.
Projektet er opbygget som et Maven multi-module project, hvor nogle moduler kompilerer til jar-filer og andre til war-filer
Projektet bygges og unit tests afvikles med følgende Maven kommando:
mvn clean install
Der genereres desuden en testrapport.
Al kode findes i NSP Git: https://git.nspop.dk/scm/com/fravalg-af-genoplivning-ved-hjertestop-register.git
Efter at projektet er checket ud vil man typisk gøre følgende:
Opsætte udviklingsmiljø (her antages IntelliJ)
Følgende software er nødvendigt for at bygge projektet:
Java 8
Maven
Gennemfør følgende steps for at bygge WAR filer:
Når man udvikler kan det være praktisk at deploye applikationen lokalt. Dette kan gøres vha. Docker Compose-filen under compose/development/docker-compose.yml.
docker-compose up -d --build |
For at få adgang til den digitale post komponent fra det lokale udviklingsmiljø, skal to ting være opfyldt:
Da digital post servicens ikke selv kender noget til disse krav, er 2-vejs TLS sat i op i development docker-compose setup'et vha. servicen digitalpost-http. Her gøres brug af et certifikat, som skal være kendt hos Trifork. Metoden, som er anvendt til at skaffe de dele som servicen skal anvende, er beskrevet nedenfor i afsnittet "udræk af certifikat og private key fra keystore". Fravalgs afsendelse af digital post, skal derfor i det lokale docker compose setup anvende denne digitalpost-http som endpoint. Dette er gjort vha environment variablen DIGITALPOST_FGVHR_URL, som spring sørger for bliver til digitalpost.fgvhr.url. På den måde bliver servicens property fil ikke påvirket af dette setup.
For at køre fravalgs fulde integrationstest skal man have adgang til digital post kompoenten hos Trifork. Man kan dog undlade denne del fra integrationstesten - skulle man ikke have adgang - se testvejledningen.
API dokumentation til Post Komponenten findes her.
Træk certifikatet ud fra PKCS12 keystore i CER format:
keytool -exportcert -keystore NSP_Test_Service_Consumer_sds.p12 -storepass Test1234 -alias sosi:alias_system -file digitalpost-https.cer |
Konverter cerfikatet fra CER til PEM format:
openssl x509 -in digitalpost-https.cer -outform PEM -out digitalpost-https.crt |
Det burde være muligt at bruge denne kommando i stedet for keytool, men af en eller anden grund virker det ikke:
openssl pkcs12 -in NSP_Test_Service_Consumer_sds.p12 -nokeys -clcerts -password pass:Test1234 |
Træk private key ud fra PKCS12 keystore med password beskyttelse:
openssl pkcs12 -in NSP_Test_Service_Consumer_sds.p12 -out digitalpost-https-password.key -password pass:Test1234 -passout pass:Test1234 |
Bemærk at denne kommando godt kan give en fejl "Error outputting keys and certificates ....", men den private key'en kommer stadig ud.
Fjern password beskyttelsen:
openssl rsa -in digitalpost-https-password.key -out digitalpost-https.key -passin pass:Test1234 |