Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootSynkroniseringsservice til FællesStamkort (SFSK) - Leverancebeskrivelse
sorttrue


Introduktion

Formål

Formålet med dette dokument er at beskrive systemarkitekturen for SFSK.

...

  • sikkerhedsvalidere kald fra anvendersystemer
  • hente data i de bagvedliggende registre FSK Registry og FSK
  • foretage de nødvendige tjek i forhold til dataspærringer i MinSpærring i forbindelse med fremsøgning af stamkort (da SFSK kun skal anvendes af systembrugere giver filtrering i forhold til spærringer mod enkeltpersoner) ikke mening i SFSK
  • foretage logninger i MinLog2 ved fremsøgning og afhentning af stamkortforetage auditlogning

SFSK indgår i samspil med de øvrige NSP services på følgende måde:

...

SFSK anvender følgende NSP libraries:

  • audit-api
  • security-apiminlog-producer

Løsningens opbygning

Nedenstående diagram viser den interne opbygningen af SFSK.

I designet er der lagt vægt på at definere en fornuftig struktur, hvor begge SFSK services er opbygget på en ensartet måde.

Gliffy Diagram
size1200
displayNameSFSK Pakke Overblik
nameSFSK Pakke Overblik
pagePin24

Ovenstående diagram viser, hvorledes en SFSK ITI-18 og ITI-43 services er opbygget.

...

Klasserne i pakkerne dk.nsp.sfsk.serivce(.impl) indeholder forretningsfunktionaliteten (se de to afsnit ved Forretningsregler nedenfor)

Integrationerne Integrationen til hhv MinLog2 og MinSpærring er implementeret i separate moduler separat modul og anvendelsen af disse er afkoblet fra forretningslaget ved hjælp af interfaces (se dk.nsp.sfsk.components).

...

Implementationsklasser til kommunikation med backends , MinLog2 og MinSpærring kan alle trække på moduler til håndtering af SFSKs eget SOSI Idkort i pakken dk.nsp.sfks.security.

...

Sikkerhedshåndtering i SFSK

 Brugertyper

SFSK anvender det på platformen udstillede security-api til at validere de indkommende requests. Alle kald til SFKS skal være lovlige DGWS kald. Det tjekkes at:

...

SFSK understøtter følgende brugertyper:


ID

Som en...

ønsker jeg at..

så jeg...

B1Borgerfremsøge dokumentreferencer til egne dokumenterkan se mine egne data
B2Borger på vegne affremsøge dokumentreferencer til en anden borgers dokumenterkan se data for denne person, som jeg har en relation til
SF1Sundhedsfaglig med autorisationfremsøge dokumentreferencer til en borgers datakan se data for denne borger
IA-1

Sundhedsfaglig med national rolle

fremsøge dokumentreferencer til en borgers datakan se dokumenter for denne borger af de typer, som min rolle giver mig adgang til
SYSystembrugerfremsøge dokumentreferencer til en borgers datakan se data for denne borger


Uddybende beskrivelse af de enkelte brugertyper samt skema der identificere en brugertype ud fra Security API.

 Bestemmelse og mapning til actor

Borger

Borgerkald sker fra sundhed.dk via system-id-kort udstedt af sundhed.dk.

Der medsendes også en HsuidHeader og indholdet af den afgør om det er et borgerkald eller en systembruger. Oplysningerne på billetten fra Security API'er er identisk med oplysningerne for en systembruger.

Sundhed.dk anvender i dag et systemopslag til at hente Fælles Stamkort, da DDS ikke understøttede borgeropslag via IDWS. Sundhed.dk er dermed trustet til at lave borgeropslag på vegne af borgeren.

For borgerkald laves der ikke registreringer i minlog og der kontrolleres ikke for behandlingsrelation.

Brugertypen: BorgerVerifikationMapning til SfskActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUser
Må ikke være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være deractorId


IdentifierFormatSkal være der og skal være CVRactorIdType

Borger på vegne af

Fuldmagtsbaseret borgeropslag fra sundhed.dk via system-id-kort udstedt af sundhed.dkSundhed.dk er trustet til at lave fuldmagtsopslag fra en borger på vegne af en anden borger.

Der medsendes også en HsuidHeader og indholdet af den afgør om det er en borger der kalder på vegne af en anden borger - eller om det er en systembruger. Oplysningerne på billetten fra Security API'er er identisk med oplysningerne for en systembruger.

Når der kaldes på vegne af en anden borger skal der laves en minlog registrering og der kontrolleres ikke for behandlingsrelation.

Brugertypen: Borger på vegne afVerifikationMapning til SfskActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUser
Må ikke være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være deractorId


IdentifierFormatSkal være der og skal være CVRactorIdType

Sundhedsfaglig med autorisation

Sundhedsfaglig opslag fra Sundhedsjournalen (og andre whitelistede fagsystemer) med medarbejderbaseret-id-kort (niveau 4). Sundhedsfaglige med autorisation, kan lave opslag på borgerens Fælles stamkort via Sundhedsjournalen

Der laves minlog registrering og der kontrolleres for behandlingsrelation.

Brugertypen: Sundhedsfaglig med autorisationVerifikationMapning til SfskActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthcareProfessionalactorType


IdentifierFormatSkal være CPRactorIdType


IdentifierSkal være satactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


Credentials.AuthorizationCodeSkal være sat


Credentials.NationalRoleVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være der


IdentifierFormatSkal være der og skal være CVR

Client
Verificeres ikke - må gerne være der

Ikke-autoriseret sundhedsfaglig

Sundhedsfaglig opslag fra Sundhedsjournalen (og andre whitelistede fagsystemer) med medarbejderbaseret-id-kort (niveau 4) hvor national rolle er tilknyttet (nspSundAssistR1 og nspSundAssistR2 giver adgang til Fælles Stamkort)

Der laves minlog registering og der kontrolleres for behandlingsrelation

Brugertypen: Sundhedsfaglig med national rolleVerifikationMapning til SfskActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthcareProfessionalactorType


IdentifierFormatSkal være CPRactorIdType


IdentifierSkal være satactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


Credentials.AuthorizationCodeMå ikke være der


Credentials.NationalRoleSkal være der - og skal matche national rolle der er opsat i properties i SFSK

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være der


IdentifierFormatSkal være der og skal være CVR

Client
Verificeres ikke - må gerne være der

Systembruger

Systembaserede opslag fra whitelistede fagsystemer via system-id-kort. Fagsystemer kan enten lave systembaserede opslag, eller via systembaserede opslag opbygge en en lokal registerkopi af Fælles Stamkort, som holdes opdateret ud fra adviseringer fra underliggende registre

Der laves ikke minlog registrering (Det er fagsystemets ansvar at gøre dette) og der kontrolleres ikke for behandlingsrelation (Det er fagsystemets ansvar at gøre dette).


Brugertypen: SystembrugerVerifikationMapning til SfskActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUser
Må ikke være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være deractorId


IdentifierFormatSkal være der og skal være CVRactorIdType


 Transformation af brugertyper

Ved kald til SFSK kan en systembruger i virkeligheden være et kald fra en anden brugertype. Det er informationer på HsuidHeaderen der afgør om den skal transformeres til en anden brugertype. Der findes følgende tranformationer:


Gliffy Diagram
displayNamesfsk-brugertyper-transformationer
namesfsk-brugertyper-transformationer
pagePin2


System >>

Brugertypen Borger

Verifikation

Mapning til DDS ServiceActor

HSUID Header

userType

Skal være der og skal være CITIZEN

Brugertypen: Borger



actingUserCivilRegistrationNumber


Skal være der


ActingUserCpr


responsibleUserRegistrationNumber


Må ikke være der



orgUsingIDType


Verificeres ikke - må gerne være der



orgUsingIDName


Verificeres ikke - må gerne være der



systemName


Verificeres ikke - må gerne være der



systemVersion


Verificeres ikke - må gerne være der



userAuthorizationCode


Verificeres ikke - må gerne være der



System >>

Brugertypen Borger på vegne af 

VerifikationMapning til DDS ServiceActor

HSUID Header

userType
Skal være der og skal være CITIZEN

Brugertypen: Borger på vegne af



actingUserCivilRegistrationNumber


Skal være der

(valideres indirekte ved at relation med responsibleUser skal være tilstede)

ActingUserCpr


responsibleUserRegistrationNumber


Skal være sat 

Skal være forskellige fra actingUserCivilRegistrationNumber

ResponsibleUserCpr


relation


Skal være sat og en af følgende skal returnere true:

isRelationChildCustodyHolder

isRelationProxyHolder

relation


orgUsingIDType


Verificeres ikke - må gerne være der



orgUsingIDName


Verificeres ikke - må gerne være der



systemName


Verificeres ikke - må gerne være der



systemVersion


Verificeres ikke - må gerne være der



userAuthorizationCode


Verificeres ikke - må gerne være der



System >>

Brugertypen System

VerifikationMapning til DDS ServiceActor

HSUID Header

userType
Må ikke være der

Brugertypen: System



actingUserCivilRegistrationNumber


Må ikke være der



responsibleUserRegistrationNumber


Må ikke være der



orgUsingIDType


Verificeres ikke - må gerne være der



orgUsingIDName


Verificeres ikke - må gerne være der



systemName


Verificeres ikke - må gerne være der



systemVersion


Verificeres ikke - må gerne være der



userAuthorizationCode


Verificeres ikke - må gerne være der



Brugertyperne bliver til sidst valideret for:

  • Alle roller, hvis hsuid header medsendt:
    • hsuid rollen skal matche den på security context
    • hsuid acting user cpr skal matche den aktøren
  • Borger på vegne af
    • Der skal være en relation

 Kald af bagvedliggende services

...

Når SFSK kalder videre til de bagvedliggende services sker dette også vha DGWS. Dog trækker SFSK sit eget niveau 3 SOSI Idkort i den videre kommunikation med de bagvedliggende services. Identiteten af kaldet skifter således til at være et kald udført af SFSK, hvilket betyder at der kan udføres whitelisting i FSK til at tillade niveau 3 idkort fra det CVR nummer, som er identificeret i SFSKs Idkort.

SFSK har sin egen whitelistingtabel, hvor subject serialnumber for det kaldende certifikat skal være whitelistet. Se SFSK - Driftsvejledning for detaljer.

Der skal ikke være mulighed for værdispring i løsningen, hvorved tjek af spærringer omgås. Værdispring aktiveres ved at med sende HTTP header 'consent-override'. (Den første) værdi af denne header fortolkes som en boolsk variable med lovlige værdier (caseinsensitive true/false). Andre eller manglende værdi fortolkes som, at der ikke foretages værdispring (dvs false). Denne oplysning ligger udenfor sikkerhedsvalideringen men opbevares på SystemUserContext til anvendelse af forretningsregler (se nedenfor).


Flow i forbindelse med "Søg dokumenter" i SFSK

...

Gliffy Diagram
3
size600
displayNameSFSK Søg Dokument
nameSFSK Søg Dokument
pagePin5

Filtrering af data via MinSpærring

De fundne metadata filtreres ved at tjekke i MinSpærring verifikationssnitfladen, om der eksisterer spærringer mod mod et af de fundne dokumenter. Et dokument tjekkes ved at at kigge på alle organisationer (sor-koder), der har redigeret dokumentet, på alle relevante tidspunkter. Disse tidspunkter er ServiceStartTime og ServiceStopTime, hvis de er tilstede, samt CreationTime for dokumenter af typen Stable, og 'nu' (opslagstidspunktet) for dokumenter af typen OnDemand. Hvis der for en eneste af disse kombinationer af sor-kode og tidspunkt er angivet andet end positivt samtykke, så filtreres dokumentet fra.

Flow i forbindelse med "Hent dokumenter" i SFSK

...

Sekvensdiagrammerne nedenfor beskriver flowet i forbindelse med "hent dokumenter".

Gliffy Diagram
size600
displayNameSFSK Hent Dokument
nameSFSK Hent Dokument
pagePin2

Afklaringer

...

3


Afklaringer

  • MinSpærring kræver et cpr på den sundhedsfaglige bruger i datatjek. Vi antager, at det er ok at medsende 'USPECIFICERET'.
  • Hvilket tidspunkt skal bruges til at tjekke for i MinSpærring? Det er et ondemand dokument uden service start eller service endtime. Beslutning: Hvis det er obligatorisk at sende dato med i spærringstjek, så bruges "Nu".