Dette dokument dækker følgende komponenter på NSP:
Identitetssløring af ansatte i sundhedsvæsenet (IDSAS)
Komponenten dækker fire web applikationer som følger
Type: SOAP Webservice
Filnavn: idsas-registration.war
Url: <serverurl>/idsas-registration
Status-url: <serverurl>/idsas-registration/status
Type: SOAP Webservice
Filnavn: idsas-lookup.war
Url: <serverurl>/idsas-lookup
Status-url: <serverurl>/idsas-lookup/status
Type: SOAP Webservice
Filnavn: idsas-salt.war
Url: <serverurl>/idsas-salt
Status-url: <serverurl>/idsas-salt/status
Status-url: <serverurl>/idsas-operations/status
Version-url: <serverurl>/idsas-operations/version
Grundlæggende konfiguration foregår ved redigering i filerne idsas-registration.properties, idsas-lookup.properties, idsas-salt.properties og idsas-operations.properties. I alle tilfælde skal de placeres i følgende WildFly modul:
/pack/wildfly8/modules/dk/nsp/idsas/main/
Moduldefinitionerne for hver service findes i kildekoden under:
/<idsas-web-module>/etc/modules/dk/nsp/idsas/configuration/main/module.xml
I idsas-registration.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i idsas-ds.xml) | Ja |
|
| personinformation.url | URL til PersonInformation servicen | Ja |
|
| personinformation.errorcount.duration | Specificering af hvor lang tid tilbage der skal tælles fejl fra PersonInformation servicen (ifm /status endpointet). Angives som duration i ISO-8601 formattet. | Nej | PT10M (10 minutter) |
| personinformation.error.tolerance | Antal fejl der tolereres fra PersonInformation servicen før /status endpointet angiver servicen som ikke tilgængelig. | Nej | 0 |
| dcc.endpoint | Angiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja |
|
I idsas-lookup.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i idsas-ds.xml) | Ja |
|
| idsas.allowed.client.system.name | Navnet på det system som må kalde "getBlurredOrganisations" i "idsas-lookup". | Nej | http://system.nspop.dk/sts
|
| dcc.endpoint | Angiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja |
|
I idsas-salt.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i idsas-ds.xml) | Ja |
|
| dcc.endpoint | Angiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja |
I idsas-operations.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i idsas-ds.xml) | Ja | |
| idsas.cleanup.max.duration | Den tilladte varighed af cleanup jobbet. Angives som duration i ISO-8601 formattet; dog bør kun sekunder angives. | Nej | PT15S (15 sekunder) |
| idsas.cleanup.batch.size | Antal rækker der ryddes op pr. iteration i cleanup jobbet. | Nej | 10000 |
| idsas.cleanup.max.retention | Hvor mange år gammel en række skal være før den må ryddes op af cleanup jobbet. Angives som duration i ISO-8601 formattet; dog kan kun år angives. | Nej | P5Y (5 år) |
I idsas-patient-id-salt.properties skal følgende property defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.patient.id.salt | Salt til hashing af patientId'ere. Se afsnittet længere nede. | Ja |
Log4j konfiguration for begge services findes i samme wildfly modul som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
Til hashing af patientId'ere i databasen, anvendes den salt som er angivet i property "idsas.patient.id.salt". Salten angives som en base64-encoded tekststreng.
Det er vigtigt, at denne salt er stabil og aldrig ændrer sig, efter at den er blevet valgt.
Servicen kan ikke starten op, hvis salten ikke er korrekt angivet.
Der er ingen særlige krav til salten, ud over at den er stabil.
Man kan fx bruge openssl til at genererer en salt:
openssl rand -base64 16 |
Alle IDSAS services udstiller en overvågningsside, som findes i listen af komponenter.
Overvågningssiderne returnerer enten:
Hvert servicekald medfører en ny indgang i auditloggen, som kan være udfyldt med følgende komponenter, afhængig af konteksten:
Komponent | Kontekst | Type | Nøgle | Information |
|---|---|---|---|---|
| IDSAS | createBlurring | Personlig | patient-id | Id på borgeren |
| IDSAS | createBlurring | Personlig | patient-id-source | Typen af id (fx "cpr") |
| IDSAS | createBlurring | Personlig | hashed-patient-id | Hashed id på borgeren |
| IDSAS | createBlurring | Ikke personlig | actor-id | Id på organisationen |
| IDSAS | createBlurring | Ikke personlig | actor-id-source | Typen af id (fx "cvr") |
| IDSAS | getCurrentSalt | Ikke personlig | actor-id | Id på organisationen |
| IDSAS | getCurrentSalt | Ikke personlig | actor-id-source | Typen af id (fx "cvr") |
| IDSAS | getBlurredOrganisations | Personlig | patient-id | Id på borgeren |
| IDSAS | getBlurredOrganisations | Personlig | patient-id-source | Typen af id (fx "cpr") |
{
"time": "2023-06-12T11:42:23.664Z",
"category": "dk.sds.nsp.audit.log.idsas",
"audit": {
"timestamp": "2023-06-12T13:42:22.972+02:00",
"components": [
{
"component": "IDSAS",
"contexts": [
{
"context": "createBlurring",
"information": [
{
"key": "cpr",
"type": "RPI",
"value": "1234567890"
},
{
"key": "cvr",
"type": "NPI",
"value": "33257872"
}
]
}
]
}
]
},
"access": {
"code": 200,
"duration": 95,
"httpHeaders": {
"Content-Type": "text/xml;charset=UTF-8",
"SOAPAction": "CreateBlurring"
},
"httpHost": "localhost",
"idCardAttributes": {
"medcom:CareProviderID": "33257872",
"medcom:CareProviderName": "Sundhedsdatastyrelsen",
"medcom:ITSystemName": "Service Consumer Test",
"medcom:UserAuthorizationCode": "6QF17",
"medcom:UserRole": "7170",
"sosi:AuthenticationLevel": "4",
"sosi:IDCardID": "SIjvZBkfZ1yAWSpYFcLpvw==",
"sosi:IDCardType": "user",
"sosi:IDCardVersion": "1.0.1"
},
"method": "POST",
"path": "/idsas/20230601/service",
"query": "",
"port": 8080,
"protocol": "http",
"reqSize": 7204,
"resSize": 211,
"soapHeaders": {
"FlowID": "72111931-fe3b-4956-bea3-20e8c5be9ce0",
"Issuer": "TEST1-NSP-STS",
"MessageID": "76315a15-0fb2-4df7-9e3e-53a3b28fb700",
"NameID": "urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
},
"threadId": "default task-1",
"time": "2023-06-12T13:42:22.968+02:00",
"stats": {
"handlerDuration": 583,
"RequestContentDuration": 41,
"ResponseContentDuration": 0,
"SecurityProtocolRequestDuration": 368,
"SecurityProtocolResponseDuration": 0,
"bufferAllocated": true,
"usedBuffers": 1,
"activeBuffersInPool": 1,
"idleBuffersInPool": 0
}
}
} |
De enkelte anvenderes ID skal whitelistes til at bruge IDSAS. Et ID kan enten være et CVR eller navnet på et system, alt efter hvad der whitelistes til.
Der er to typer af whitelisting; BLURRING og SALT.
Der findes en tabel whitelist i databasen til dette formål.
SQL til at indsætte whitelisting af anvender kan se ud på følgende måde:
|
Note-feltet kan fx anvendes til at referere en supportsag eller lignende for sporingshensyn. Kun actor_id og type er obligatorisk.
Oprettelse/fornyelse af salt sker via et HTTP GET kald til <serverurl>/idsas-operations/renew-salt
Dette kald skal laves for at oprette det første salt, og efterfølgende for at forny saltet, når der er behov.
Oprydningsjobbet startes via et HTTP GET kald til <serverurl>/idsas-operations/cleanup-blurrings
Jobbet kaldes for at påbegynde en oprydning af inaktive sløringer, og vil slette alle registrerede sløringer, som har være inaktive i mindst 5 år.
Jobbet køres i iterationer af en konfigureret størrelse, og terminerer enten når der ikke er flere inaktive sløringer der skal slettes, eller når jobbet har kørt i en konfigureret varighed.
Det vil fremgå af servicens overvågningsside om oprydningen blev færdig:
| Blurring Cleanup Job Status | NOT_STARTED, NOT_FINISHED, FINISHED |