STARs sikkerhedsmodel

STARs sikkerhedsmodel



Introduktion

Denne side beskriver den sikkerhedsmodel, der er anvendes på STARs servicesnitflader. I STARs servicekatalog findes både SOAP-webservices og REST-services. Grundlæggende anvendes samme sikkerhedsmodel i begge tilfælde, hvor der primært er syntaks til forskel.

For alle services gælder, at de udstilles via HTTPS og skal kaldes med et klientcertifikat, som skal være et funktionscertifikat (FOCES). Derudover skal der medsendes metadata, som angiver, hvilken myndighed der kaldes på vegne af, samt hvem aftager agerer som databehandler for. Derudover skal angives hvilken bruger / medarbejder / applikationsproces (ved batch-processeringer) der foretager handlingen, uanset om det er en læse eller skriveoperation, for at dette kan logges. For SOAP-webservices medsendes metadata som soap headers og for REST-services medsendes som http headers.

Se også generelt om sikkerhed her: Sikkerhed

Metadata

Sikkerhedsmodellens metadata består af 3 dele (kun 2 for SOAP):

  • ActiveOrganisation (SOAP + REST)

  • RequestUserMetadata (SOAP + REST)

  • CivilRegistrationIdentifier (REST)

Undtaget fra disse er offentlige webservices, der kan udstilles uden sikkerhed.

ActiveOrganisation

ActiveOrganisation anvendes til tjek af den grundlæggende sikkerhed: Må denne databehandler behandle data for denne myndighed.



Feltnavn

Type

Detaljer

Forekomst

Beskrivelse

Feltnavn

Type

Detaljer

Forekomst

Beskrivelse

ActiveOrganisationHeader

ActiveOrganisationHeaderType



1

ActiveOrganisationHeader benyttes til angive hvilken myndighed kalderen udgiver (impersonate) sig for at være overfor DFDG.

    OrganisationTypeIdentifier

OrganisationTypeIdentifierType

Base: Integer



1

Identificerer den type af organisation, som kaldet er foretaget på vegne af. Dette er en kodeliste, dog angives værdi som en integer af historiske årsager.

    OrganisationCode

String



1

Koden som identificerer organisationen. Det kan være jobcenternummer, et CVR nummer, en a-kassekode, en kommunekode, afdelingsnummer etc.

RequestUserMetadata

RequestUserMetadata anvendes primært til logning, så der sikres sporbarhed i forhold til, hvem det er, der anvender services, se elementerne i detaljer nedenfor. Elementet anvendes dog også til tjek af anden aktørs adgang til borger, tjek i forbindelse med gæsteadgang samt til adgangshåndtering når STARs systemer agerer på vegne af a-kasser og jobcentre som fx i forbindelse med sagsbehandlerlogin på Jobnet.



Feltnavn

Type

Detaljer

Forekomst

Beskrivelse

Feltnavn

Type

Detaljer

Forekomst

Beskrivelse

RequestUserMetadataHeader

RequestUserMetadataType



1

RequestUserMetadataHeader benyttes til at angive den kaldende myndighed overfor DFDG samt information om den kaldende bruger.

    RequestUserStructure

RequestUserStructureType



1

Struktur der indeholder beskrivelse af brugeren

        UserFullName

UserFullNameType

Base: String

Length: 1-140

1

Brugers fulde navn, ved systemkald angives systemets og jobbets navn her.

Der skal så vidt muligt oplyses konkret navn på medarbejder, når der er tale om Webservice kald foranlediget af sagsbehandleres læsning eller opdatering af oplysninger i DFDG eller STARs øvrige systemer. Alternativt en éntydig brugeridentifikation, der muliggør, at der kan findes fra logs i STARs it-systemer til log entries i aftagernes it-systemer. 

Det bør undgås at angive brugers fulde navn uden mellemrum mellem fornavn, mellemnavn og efternavn.

        RequestUserTypeIdentifier

RequestUserTypeIdentifierType

Base: Integer



1

Kodeliste med brugertyperne:

  1. Citizen - Borger, f.eks. i selvbetjeningsløsninger

  2. CaseWorker - Sagsbehandler (fysisk person)

  3. System - En systemproces, som f.eks. et batchjob, eller noget andet automatiseret, herunder en robot, der ikke kan henledes til en brugerhandling.

  4. CompanyEmployee  - fx raskmelding foretaget af en medarbejder i en virksomhed (via NemRefusion)

        UserIdentifier

UserIdentifierType

Base: String

Length: 1-255

1

Unik identifikation af brugeren, f.eks. en GUID, et medarbejder ID, system ID, bruger ID, certifikat ID, cpr-nummer, email (hvis den er unik) o.l.

Afhængigt af RequestUserTypeIdentifier udfyldes feltet med:

  1. Borgers CPR nummer eller et andet unikt ID, der identificerer borgeren

  2. Sagsbehandler ID, der kan spores tilbage til brugeren, kan være en e-mail, et medarbejder id, eller lignende

  3. System ID, unik identifikation af den proces eller batchjob der foretog handlingen.

        UserEmail

EmailAddressIdentifierType

String (E-mail)

Length: 2-256

Pattern: ([^>\(\)\[\]\\,;:@\s]{0,191}@[^>\(\)\[\]\\,;:@\s]{1,64})

0-1

Hvis der angives e-mail: Brugerens e-mail adresse skal angives, når der er tale om Webservice kald foranlediget af sagsbehandleres læsning eller opdatering af oplysninger.

Elementet kan undlades ved system-til-system kald.

Der må ikke angives en tom streng / tom mailadresse, når elementet medtages.

    RequestOrganisationStructure

RequestOrganisationStructureType



1

Information om den organisation, som brugeren, der har foretaget kaldet, tilhører.

        OrganisationTypeIdentifier

OrganisationTypeIdentifierType

Base: Integer



1

Kodeliste. Identificerer den type af organisation, som brugeren hører til. Dette er en kodeliste, dog angives værdien som en integer af historiske årsager.

        OrganisationCode

String



1

Koden som identificerer organisationen. Det kan være et jobcenternummer, CVR nummer, en a-kassekode eller en kommunekode.

    RegistrationDateTime

DateTime



1

Registreringstidspunkt i kaldende system

: Det er af hensyn til den borgervendte visning i selvbetjeningsløsninger dog vigtigt, at CaseWorker i Body'en er angivet med sagsbehandlers navn.

Fx bør følgende undgås (af hensyn til WSRM-dannelse, hvor brugers navn ofte er opdelt i særskilte elementer til fornavn og efternavn):

  • fornavn+mellemnavn+efternavn+kommunenavn+kommune

  • fornavn_mellemnavn_efternavn_kommunenavn_kommune

  • fornavn+mellemnavn+efternavn+Sagsbehandler

CivilRegistrationIdentifier

For REST-services gælder, at cprnr. skal angives som http header på samme måde som ActiveOrganisation og RequestUserMetadata vha af en http header, der hedder x-civilRegistrationIdentifier. Nedenfor er vist eksempel på de 3 http headers ved kald af en REST-service. Denne header skal udelades på ikke-borgercentriske serviceoperationer. 



Name

Value

Name

Value

x-activeOrganisation

{"organisationType":5,"OrganisationCode":"1"}

x-requestUserMetadata

{"RequestUserStructure":{"UserFullName": "FullName","RequestUserType": 1,"UserIdentifier": "test","UserEmail": "test@star.dk" },"RequestOrganisationStructure":{"OrganisationType":5,"OrganisationCode": "1"},"RegistrationDateTime": "2012-04-23T18:25:43.511Z"}

x-civilRegistrationIdentifier

1234567890



Bemærk at værdien for hver af headerne ikke må indeholde linjeskift. Http headers er per definition single line.

Fejlhåndtering

Når der kaldes, tjekkes indholdet af felterne og rettighederne i forhold til kalder. Dette kan resultere i nedenstående fejl, som skal håndteres på tværs af alle kald mod Stars services.

STAR.foundation fejlkoder

Fejlkode

Fejlbesked

 

1

Person does not exist for given cpr number.

 

2

StartDate should be before EndDate

 

1010

Unknown cpr

 

1012

Logon failed

 

1013

User has insufficient permissions to access this webservice

 

1014

The submitted message is not valid

 

1100

An error has occurred

 

1101

Client certificate missing from request

 

2001

Invalid CodeList name

 

2002

Invalid CodeList value

 

2003

Use of expired CodeList value not allowed

 

4413

The authoritytype of the requestheader is invalid

 

4575

You are not authorized to execute the operation

 

8173

OrganisationType is invalid according to the organisationTypeIdentifierCodeList.

 

8174

UserType is invalid according to the requestUserTypeIdentifierCodeList.

 

8232

The Soap request message is missing its required Soap header: ActiveOrganisationHeader

 

8233

The Soap request message is missing its required Soap header: RequestUserMetadataHeader

 

8234

Could not deserialize the Soap header: ActiveOrganisationHeader

 

8235

Could not deserialize the Soap header: RequestUserMetadataHeader

 

Fejlhåndtering specifikt for REST

Ved fejl på REST-services returneres nedenstående datastruktur. Her vil man kunne se, hvilken fejl, der er sket og detaljer om fejlen under details:

{ "errorCode": 1014, "errorMessage": "The submitted message is not valid", "details":"{\"\":[\"The field civilRegistrationIdentifier must match the regular expression \'((((0[1-9]|1[0-9]|2[0-9]|3[0-1])(01|03|05|07|08|10|12))|((0[1-9]|1[0-9]|2[0-9]|30)(04|06|09|11))|((0[1-9]|1[0-9]|2[0-9])(02)))[0-9]{6})|0000000000\'.\"]}", "correlationId": "d0d006d6-d626-4106-90a2-2d9e94eb1a1f" }

Http Status koder

Følgende HTTP-statuskoder anvendes på REST-services:

HTTP Statuskode

Anvendelse

HTTP Statuskode

Anvendelse

200

Anvendes til alle kald der går succesfuldt igennem

400

Anvendes ved invalidt input

401

Anvendes ved autorisationsfejl

500

Anvendes ved generelle applikationsfejl

Flere fejlkoder

De samlede fejlkoder for en given forretningsapplikation (fx "kontaktforloeb") findes på wiki: Under Fysisk arkitektur - Forretningsservices findes hver forretningsapplikation og lige under den et link til alle kodelister. For igen at bruge kontaktforloeb som eksempel, så er linket Kontakforloeb.Codelists. En af disse kodelister er ErrorCodes - hvor alle fejl som kastes af forretningsapplikationens services er oplistede.  

Udfyldelse af OrganisationTypeIdentifier og OrganisationCode felterne

Følgende beskriver, hvorledes sammenhængen er mellem organisationstypen og organisationskoden, derudover gennemgås, hvorledes de forskellige aktører forventes at kalde.

OrganisationType
Identifier

Organisation

OrganisationCode
Beskrivelse 

Format

Eksempel

OrganisationType
Identifier

Organisation

OrganisationCode
Beskrivelse 

Format

Eksempel

1

Arbejdsformidlingen







2

A-kasse

A-kassekode

Integer - 2 cifre

15

Se Identifikator feltet i kodeliste: GetUnemploymentFundList

3

UdgaaetKommuner

Kommunekode

Integer - 3 cifre

101

4

Anden Aktør

CVR-nummer

Integer - 8 cifre

31299004

5

STAR

Afdelings-/systemnummer

-1=Ikke specificeret (Udgår)
1=DFDG
2=LSS
3=Amportal
4=Jobnet
5=Jobbing
6=MitJobkompas
7=EØS
8=VITAS
9=Planner
10=JobAG
11=JobKon
12=Jobservice Danmark
13=Borger.dk
14=IOM (Input Output Management System)
15=JobSearch
16=Taxonomy
17=WikiUploader
18 = Ydelsesudstilling
19 = Eures
20 = Revi
21 = Borgerkommunikation
22 = PerformanceMonitor
23 = LogViewer
24 = EksterneData
25 = StarTools
26 = Kontaktforloeb
27 = Virksomhedsindsats
28 = VisiteringOgStatus
29 = Komposit
30 = EksternKommunikation
31 = Match
32 = Borgerindsats
33 = IAM
34 = Jobannonce WIDK
35 = Overvaagning
36 = Virksomhedsordning
37 = StarFoundationDemoApp
38 = AuthAccessEngine
39 = Medlemskabstilknydning
40 = IdentityServer
41 = JGM
100 = Ukendt (bør udgå)

Integer




6

Driftsselskab

Jobcenterkode

Integer - 5 cifre

10100

Se kodeliste: GetJobCenterList

7

Kommune

Kommunekode

Integer

3 cifre

101

Se kodeliste: GetMunicipalityList

8

JobCenter

Jobcenterkode

Integer - 5 cifre

10100

Se kodeliste: GetJobCenterList

9

Beskæftigelsesregion







11

Uddannelsesinstitution

CVR-nummer

Integer - 8 cifre

32435465

12

Samarbejdspartner

CVR-nummer

Integer - 8 cifre

32435465

13

Sygehusregion

CVR-nummer

Integer - 8 cifre

32435465

14

Kriminalforsorgen

CVR-nummer

Integer - 8 cifre

32435465

15

Styrelsen for IT- og Læring

CVR-nummer

Integer - 8 cifre

32435465

16

Styrelsen for Videregående Uddannelser

CVR-nummer

Integer - 8 cifre

32435465

17

Fagforbund

CVR-nummer eller CPR-nummer 1)

Integer 8/
string 10

32435465 / 0101714321

18

Udbetaling Danmark (UDK)

CVR-nummer

Integer - 8 cifre

32435465

19

Udlændinge, Integrations- og Boligministeriet (UIBM)

CVR-nummer

Integer - 8 cifre

32435465

20

Privat jobbank eller vikarbureau

CVR-nummer eller CPR-nummer 1)

Integer 8/ string 10

32435465 / 0101714321

21

AUB (arb.givernes uddannelsesbidrag = borger.dk)

CVR-nummer

Integer - 8 cifre

12345678

22

Revisor

CVR-nummer

Integer - 8 cifre

12345678

23

Ministerie

CVR-nummer

Integer - 8 cifre

12345678

24

Virksomhed

CVR-nummer

Integer - 8 cifre

12345678

25

Klientsystem

ClientSystemTypeIdentifier

Integer

4

Bemærk at der ikke er validering på at indberetninger med en given OrganisationCode indberetter jf. ovenstående formater.

 1) Hvis der kaldes ind fra systemet, forventes RequestUserType sat til 3 - System og OrganisationCode er et CVR nummer. Derimod forventes kald fra borgervendt selvbetjeningsløsning at komme med RequestUserType 1 - Citizen og UserIdentifier: CPR-nummer.

Kommunalt Jobcenter sagsbehandlingssystem - KSS

Dette omhandler systemer som:

  • KMD Momentum (Opera og Workbase)

  • Schultz FASIT

  • Andre jobcentersystemer

Der anvendes (mindst) ét FOCES certifikat pr. system. Metadata udfyldes ud fra følgende:

Feltnavn

Indhold

Feltnavn

Indhold

ActiveOrganisationHeader

OrganisationTypeIdentifier = 8

OrganisationCode = Jobcenterkode / 10100

RequestUserMetadataHeader

Hvis jobcentermedarbejder:

  • OrganisationTypeIdentifier = 8

  • OrganisationCode = Jobcenterkode / 10100

Hvis Kommunalmedarbejder:

  •  OrganisationTypeIdentifier = 7

  •  OrganisationCode = Kommunekode / 751

Hvis anden aktør medarbejder:

  • OrganisationTypeIdentifier = 4

  • OrganisationCode = CVR nummer / 32435465

Hvis der skal laves sagsbehandling på en borger, der ikke ”ejes” af pågældende myndighed, skal myndigheden forinden overtage borgeren. Myndighedstilknytningen udledes via borgerens adresse, men den er selvstændig og kan ændres. Borgeren kan til enhver tid kun have én myndighedstilknytning.

Resource planning system / planner system

Der skal kaldes på vegne af den myndighed som man agerer på vegne af. Hvis der indrapporteres selvbooking skal RequestUserMetadata indikere borgerdata

Feltnavn

Indhold

Feltnavn

Indhold

ActiveOrganisationHeader

OrganisationTypeIdentifier = 8

OrganisationCode = Jobcenterkode / 10100

RequestUserMetadataHeader

Hvis jobcentermedarbejder:

  • OrganisationTypeIdentifier = 8

  • OrganisationCode = Jobcenterkode / 10100

Hvis selvbetjeningsløsning, borgers selvbooking:

  • UserFullName = <borger navn>

  • RequestUserTypeIdentifiern = 1 (citizen)

  • UserIdentifier = <borger CPR>

  • OrganisationTypeIdentifier = 8

  • OrganisationCode = Kommunekode / 10100

Kommunal selvbetjeningsløsning

Feltnavn

Indhold

Feltnavn

Indhold

ActiveOrganisationHeader



- OrganisationTypeIdentifier

7 (kommune)

- OrganisationCode

<kommunekode>

RequestUserMetadataHeader



- RequestUserStructure



-- UserFullName

<citizen name>

-- RequestUserTypeIdentifier

1 (citizen)

-- UserIdentifier

<User CPR>

-- UserEmail

empty

- RequestOrganisationStructure



- OrganisationTypeIdentifier

7 (kommune)

- OrganisationCode

<kommunekode>

RegistrationDateTime

<datetime>

Ydelsescentersystemer

Dette dækker systemer som:

  • KMD-Aktiv og KOMBIT KY

  • KMD eDagpenge og KOMBIT KSD

  • Andre ydelsescentersystemer

Der anvendes (mindst) ét FOCES certifikat pr. system. Metadata udfyldes ud fra følgende:

Feltnavn

Indhold

Feltnavn

Indhold

ActiveOrganisationHeader

OrganisationTypeIdentifier = 7

OrganisationCode = Kommunekode / 751

RequestUserMetadataHeader

Hvis kommunal medarbejder:

  • OrganisationTypeIdentifier = 7

  • OrganisationCode = Kommunekode / 751



A-kasse-sagsbehandlingssystemer

Der anvendes mindst ét FOCES cerfikat pr. a-kasse, også selv om disse anvender samme databehandler/system. Denne model har Datatilsynet accepteret på et møde om a-kassernes overgang til FOCES.

Feltnavn

Indhold

Feltnavn

Indhold

ActiveOrganisationHeader

OrganisationTypeIdentifier = 2