Overblik

Dette dokument beskriver installation og konfiguration af Stamkortregister-servicen (SKR). Konfiguration af tilhørende DGWS/IDWS Proxy er også beskrevet.

Stamkortregister-servicen består af 2 komponenter (war-arkiver), der skal konfigureres og deployes på en applikationsserver:

Projektet bygges med Maven og kræver Java 8 samt en MariaDB-installation for at kunne afvikle unit-tests.

Udover normalt tilgængelige Maven dependencies, afhænger projektet også af interne artefakter. Hvis disse artefakter ikke er udgivet (released) i den påkrævede version i NSP's Nexus repository, skal man selv udtjekke og bygge dem fra NSP's Subversion i den pågældende version. Artefakternes forskellige versioner vil være tilgængelige under et Subversion-tag. Disse artefakter er:

For at bygge disse interne artefakter, henvises der til artefakternes dokumentation.


Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe.

Ændringslog

Version

Dato

Ændring

Ansvarlig

1.0.0

2018-08-31

Initialt dokument

Trifork

1.0.12018-09-11Ændret databasedriver til MySQLTrifork
1.0.112019-08-16Fjernet SCES properties. Opdateret default value for property "minlog.read-activity-text".Trifork
1.0.122019-25-09Ajourført

Trifork

1.0.172020-10-08AjourførtKvalitetsIT
1.0.182021-04-13OpdateretKvalitetsIT

Byggevejledning

For at bygge projektet og dets deployables (war-filer) uden at køre unit-tests og integrationstests, anvendes følgende Maven kommando:

mvn clean install -DskipTests

Projektets deployables ender i target-mappen under de respektive moduler.

Afvikling af unit-tests

For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.

I udviklingssammenhæng er det lettest at køre MariaDB i en docker-container. Man kan starte MariaDB og automatisk få oprettet de nødvendige database-schemas vha. nedenstående kommando:

cd compose/development
docker-compose up skrdb

application.properties-filen i projektet er datasources som default sat til at anvende root-user med tomt password.

Unit-testene i projektet kan afvikles med følgende Maven-kommando:

mvn clean test

Alternativt kan også samtidigt bygge projektet ved at anvende Maven-kommandoen:

mvn clean install

Krav til miljø

Komponenten er tilpasset at kunne indgå i det aktuelt gældende CI-miljø på NSP. Det tager aktuelt udgangspunkt i version 1 af NSP's platform Docker image.

Krav til database

Servicen er testet mod MariaDB version 10.1, som bliver brugt på NSP platformen.

Krav til hardware

Der stilles ikke nogle særlige minimumskrav til hardware, men man skal forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.

Oprettelse af databaser og tabeller

Herunder beskrives servicens tilgang til database samt oprettelse af tabeller og views.

Tilgang til database

Servicen kræver en enkelt database til dens egen data. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.

Servicen konfigureres med 2 datasources, som tilgår databaserne vha. separat specificerede brugere.

Databasebrugeren, der tilgår servicens database, skal være tildelt følgende rettigheder:

Databasebrugeren, der tilgår stamdata-view'et, skal være tildelt følgende rettigheder:

Oprettelse af database og tabeller

Datamodellen styres vha. inkrementelle SQL-scripts, der kan findes under compose/database/db.

Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Flyway, men dette er kun aktiveret under afvikling af unit-tests, da dette ikke ønskes anvendt i produktion.

I produktion anvendes scripterne manuelt og skal køres på databasen i inkrementel rækkefølge baseret på filnavnet (først 00-__(...).sql, dernæst 01-V2__(...).sql, osv.). Hvert script må aldrig køres mere end én gang. Der gælder dog en undtagelse for ikke-versionerede scriptes, hvis filnavne indeholder med R, som står for Repeatable. Disse Repeatable scripter skal køres hver gang deres indhold (checksum) er blevet ændret, men de må først køres efter alle versionerede scripter er blevet kørt.

Ved initial installation af servicen vil det således være følgende scripter, der skal køres i den nedenstående rækkefølge:

Servicens database


Under afvikling af unit-tests bliver test-data automatisk indsat i tabellerne vha. yderligere SQL-scripts i compose/database/db/

Scriptet 08-R__create_v2_Person_Simplified_view.sql opretter et view, som afhænger af eksistensen af tabellen v2_Person. Dette er tabellen, der indeholder CPR-ændringer, og den skal man selv stå for at levere. Under afvikling af unit-tests bliver en testudgave af denne tabel automatisk oprettet vha. et SQL-script i compose/database/db.

Deployment

Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer.

skr-service komponenten konfigureres ved hjælp et Wildfly-modul, der indholder de nødvendige konfigurationsfiler til definering af datasources, brugerdefinerede parametre, logning, mm. Wildfly-modulet er integreret i komponentens Docker image.


Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet.


Konfiguration af servicen

Herunder beskrives properties i skr-service komponentens konfigurationsfiler.

application.properties

Properties er her opdelt i to tabeller. Den første tabel indeholder anvendte Spring Boot-properties. Den anden tabel indeholder properties, der er specifikt defineret til brug i servicen. Begge typer af properties er defineret i samme konfigurationsfil.

Spring Boot-properties

PropertyBeskrivelseDefault
spring.active.profilesAktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment.production
spring.application.nameNavnet på applikationen. Skal ikke ændres.skr
spring.jmx.enabledDisable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet.false
spring.jta.enabled

JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false)

false
management.server.port

Port som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sættes værdien til -1.

-1

Komponentspecifikke-properties

PropertyBeskrivelseDefault
datasource.skr.jndi-nameAngiver navnet på en JNDI datasource til Stamkortregister-databasenjava:jboss/datasources/SKR-DS
datasource.stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
app.endpointAngiver den location der vises i wsdl.
dcc.endpointAngiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion.http://test1.fsk.netic.dk:8080/fsk/services/fsk
minlog.read-activity-textAngiver den tekst der registreres i MinLog, når der bliver læst Stamkortregister-data for et CPR-nummerOpslag i Stamkort
minlog.write-activity-textAngiver den tekst der registreres i MinLog, når der bliver læst Stamkortregister-data for et CPR-nummerOpdatering af Stamkortregister
schemavalidation.validate-requestsAngiver om requests skal schema-valideres (true/false)true
schemavalidation.validate-responses

Angiver om responses skal schema-valideres (true/false)

true
schemavalidation.fail-on-response-error

Angiver om en kald skal returnere fejl, hvis response ikke er schema-valid (true/false)

true
forward-only-filter.enabledAngiver om servicen kun skal kunne tilgås igennem DGWS/IDWS Proxyen (wsproxy komponenten). Bør altid være sat til true. (true/false)true
whitelist.careprovideridAngiver en komma-separeret liste af whitelistede CVR-numre fra medcom:CareProviderID-attributten fra en DGWS header. Denne whitelisting medfører, at anvenderen kan redigere data ud fra et DGWS niveau 3 kald. Standard-værdien er Sundhed.dk's CVR-nummer.31908574
jobs.delete.cpr-max-resultsSlettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen25
jobs.delete.cpr-max-loopsSlettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering2
nas.app.nameApplikationsnavn til sla-logning ved NAS-kaldstamkortregister
nas.app.shortnameKort applikationsnavn til sla-logning ved NAS-kald.skr
nas.fail.thesholdGrænse for hvor mange gange NAS-kald må fejle i træk, før NAS opfattes som usund.1
nas.connect.timeout.millisGrænse for hvor lang tid det må tage at oprette forbindelse til NAS (i ms.).10000
nas.read.timeout.millisGrænse for hvor lang tid det må tage at modtage svar fra NAS (i ms.).10000
nas.max.total.connectionsMaksimalt antal samtidige NAS-forbindelser.200
nas.default.max.connections.per.routeMaksimalt antal NAS-forbindelser per rute.20
nas.service.urlNAS Endpointhttp://test1.ekstern-test.nspop.dk:8080/nas2/notificationbroker/service
nas.topicNAS topicTESTNAS-TOPIC1
nas.idcard.subject.id.typeSubjecttype for IDKort til NAS-kald.medcom:cvrnumber
nas.idcard.subject.idSubjectId for IDKort til NAS-kald.46837428
nas.idcard.subject.nameSubjectname for IDKort til NAS-kald.Funktionssignatur til testmiljø (funktionscertifikat)
nas.idcard.levelSikkerhedsniveau for IDKort til NAS-kald.3
nas.idcard.system.nameSystemnavn i IDKort til NAS-kald.itsystem
nas.sts.endpointEndpointet, hvor Minspærring skal trække sit SOSI IDkort på baggrund af sts.keystorehttp://test2.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService
nas.sts.test.modeBoolsk værdi, der angiver om der anvendes test- eller produktions SOSIFederationtrue
nas.sts.keystoresti til keystore, der indeholder certifikat til at trække Idkort til NAS-kald.Statens_Serum_Institut_FOCES.jks
nas.sts.keystore.passwordPassword til sts.keystoren/a
skr.codesystem.legalRelationshipTypesHer kan mulige værdier af "RelationType" angives. uspec_paaroerende,
ingen_relationer,
barn,
mor,
far,
forælder,
søskende,
aegtefaelle,
barnebarn,
svigerbarn,
øvrig_familie,
nabo,
samboende,
registreret_partner,
anden,
søn,
datter

log4j2.xml

Konfigurerer logning for servicen.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

minlogclient.properties

Konfigurerer MinLog for servicen.

Standardværdierne indeholder konfiguration der skriver MinLog-logninger til test1-miljøet.

I produktion skal properties konfigureres som beskrevet i MinLog Service - Guide til anvendere.

log4j-nspslalog.properties

Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.

Se NSP-util - Designdokument.doc eller den officielle Log4j 1 dokumentation for alternativ konfiguration.

Konfiguration af proxy-komponent

Wsproxy er en separat komponent og har derfor adskilte konfigurationsfiler ift. selve servicen. Bemærk at disse konfigurationsfiler ikke er placeret i et modul, men i stedet er mountet i Docker containeren under <wildfly-root>/ standalone/configuration.

Der henvises til Installationsvejledning (DGWS/IDWS Proxy) for nærmere beskrivelse af konfigurationen.

wsproxy-skr.properties

Konfigurerer wsproxy komponenten.

Standardværdierne indeholder konfiguration til test1-miljøet, der signerer IDWS-responses med det medfølgende testcertifikat.

proxyconfig-skr.xml

Konfigurerer mapning af requests til den interne forwarding fra wsproxy til selve servicen.

Standardværdierne angiver nogle brugbare konfigurationer af mapninger for anvendelse i produktion.

log4j2-wsproxy-skr.xml

Konfigurerer wsproxy komponentens egen logning. Komponenten har både service-logning og audit-logning.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion.

Konfiguration af datasources

skr-service komponenten kræver adgang til en JNDI datasource. Denne skal opsættes i Wildfly og refereres til i servicens application.properties.uspec_paaroerende,
ingen_relationer,
barn,
mor,
far,
forælder,
søskende,
aegtefaelle,
barnebarn,
svigerbarn,
øvrig_familie,
nabo,
samboende,
registreret_partner,
anden,
søn,
datter

Overblik over komponenter

Der følgende beskriver de forskellige deployables som komponenten indeholder.

Filnavn når deployet

Beskrivelse

Kilde

skr-service.war

SKR servicen

skr-service-<version>.war

skr.war

DGWS/IDWS Proxy . Se Installationsvejledning (DGWS/IDWS Proxy) for dokumentation. War-filen for wsproxy komponenten omdøbes til skr.war, hvilket bevirker at webservice context-path for wsproxy i dette tilfælde bliver /skr.

wsproxy-<version>.war (findes ikke i projektet)

Se driftsvejledningen for yderligere information.

Opgradering af komponenter

Når der kommer opgraderinger til en komponent, vil der medfølge release notes, der beskriver opgradering, fallback, osv. for den enkelte komponent.