STARs sikkerhedsmodel
- 1 Introduktion
- 2 Metadata
- 3 Fejlhåndtering
- 4 Udfyldelse af OrganisationTypeIdentifier og OrganisationCode felterne
- 4.1 Kommunalt Jobcenter sagsbehandlingssystem - KSS
- 4.2 Resource planning system / planner system
- 4.3 Kommunal selvbetjeningsløsning
- 4.4 Ydelsescentersystemer
- 4.5 A-kasse-sagsbehandlingssystemer
- 4.6 A-kasse selvbetjeningsløsning
- 4.7 Anden aktør sagsbehandlingssystemer
- 4.8 STAR's systemer
- 4.8.1 Jobnet for jobkonsulenter
- 4.8.2 Jobnet
- 4.8.3 Jobnet for arbejdsgivere
- 4.8.4 VITAS
- 4.8.4.1 Vitas - og anden aktør
- 5 Certifikater og testmiljøer
- 6 Serviceaftagers forpligtigelser
- 7 Anvendelse af OrganisationType ved WSRM
- 8 SAML og medarbejdercertifikater
- 9 Webservicebeskeder (WSB)
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 |
---|---|---|---|---|
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 |
---|---|---|---|---|
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 | Base: Integer | 1 | Kodeliste med brugertyperne:
| |
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:
|
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 |
---|---|
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 |
---|---|
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 | Organisation | OrganisationCode | 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) | 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/ | 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 | 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 |
---|---|
ActiveOrganisationHeader | OrganisationTypeIdentifier = 8 OrganisationCode = Jobcenterkode / 10100 |
RequestUserMetadataHeader | Hvis jobcentermedarbejder:
Hvis Kommunalmedarbejder:
Hvis anden aktør medarbejder:
|
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 |
---|---|
ActiveOrganisationHeader | OrganisationTypeIdentifier = 8 OrganisationCode = Jobcenterkode / 10100 |
RequestUserMetadataHeader | Hvis jobcentermedarbejder:
Hvis selvbetjeningsløsning, borgers selvbooking:
|
Kommunal selvbetjeningsløsning
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 |
---|---|
ActiveOrganisationHeader | OrganisationTypeIdentifier = 7 OrganisationCode = Kommunekode / 751 |
RequestUserMetadataHeader | Hvis kommunal medarbejder:
|
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 |
---|---|
ActiveOrganisationHeader | OrganisationTypeIdentifier = 2 |