JobannonceService (version 2) sikkerhedsmodel

STAR har valgt en sikkerhedsmodel, STARs sikkerhedsmodel, som som er fælles for alle forretningsdomænerne i STAR. Sikkerhedsmodellen for jobannonceuniverset tager udgangspunkt i denne IAM model. For få et bedre overblik over STARs valg af sikkerhedsmodel, kan man orientere sig i nedenstående.

I forbindelse med de meget specifikke request headers, som skal angives ved et servicekald for at overholde STARs sikkerhedsmodel, er der udviklet en guide (JobannonceService version 1 - Guide ) til STARs aftagere, hvor der er eksempel på udfyldelsen heraf for de forskellige typer af aftagere.

Dokumentation af sikkerhedsmodellen på baggrund af IAM og JWT tokens kan findes her:

 

Scopes

De forskellige endpoints i Jobannonceuniverset vil være lagt bag et AuthorizationScope. Det vil sige, at før man overhovedet får lov til at kalde ind på nogle af STARs endpoints, så skal det certifikat eller den identitet, man kalder ind med, være tildelt det specifikke scope, som endpointet kræver. Hvis ikke certifikatet er blevet tildelt det scope, vil man blive mødt med en fejlbesked.

Man kan se listen over endpoints og de påkrævet scopes her:

Scopes og brugergrupper

Tildelingen af scopes til certifikater og identiteter, er noget der vil ske i IAM fremadrettet.
For nu sker det i AmpAdmin2.

Forretningsroller

Der bliver udstillet nogle forretningsroller, som sættes op i AmpAdmin2, og den relevante hedder Jobannonce-Portal. Den bliver tildelt virksomheder, der agerer jobannonceportaler, som f.eks. http://Ofir.dk
Her har virksomheden et behov for at kunne læse, oprette og opdatere jobannoncer i Jobannonceuniverset på vegne af dets egne brugere.

Andre aftagere i Jobannonceuniverset vil ikke få tildelt nogle forretningsroller.

Klassificering

I Jobannonceuniverset klassificerer man kalderen, på baggrund af medsendte værdier fra kaldet, til at granulere, hvad kalderen har rettigheder til at læse, oprette eller redigere - se afsnittet: rettighedsstyring.

Forskellige brugere kan f.eks. have adgang til at oprette jobannoncer: Hvor en almindelig virksomhed ikke må oprette jobannoncer på vegne af andre virksomheder, må et jobcenter gerne.

For et givent kald til STARs services, kan vi hente organisationstypen, organisationskoden og den dertilhørende forretningsrolle ud fra SecurityContext, som stammer fra Star.Foundation.Framework.Security (se alle mapninger i https://starwiki.atlassian.net/wiki/spaces/ISB/pages/4006872885):

  • Forretningsroller - securityContext.Caller.Roles

  • Organisationstype

    • Portalbrugere - securityContext.ImpersonatedAuthority.OrganisationType

    • Andre brugere - securityContext.CallingAuthority.OrganisationType

  • Organisationskode

    • Portalbrugere - securityContext.ImpersonatedAuthority.OrganisationCode

    • Andre brugere - securityContext.CallingAuthority.OrganisationCode

På baggrund af disse tre værdier fra kaldet, vil kalderen blive klassificeret, og på baggrund af klassificeringen opnå visse rettigheder, der efterfølgende vil blive brugt til adgangstyring.

OrganisationsType

OrganisationCode

Forretningsrolle

 

Klassificering

OrganisationsType

OrganisationCode

Forretningsrolle

 

Klassificering

JobCenter (8)

  • (Jobcenter kode)

 

➡️

Jobcenter

AKasse (2)

  • (A-Kasse kode)

 

➡️

A-kasse

STAR (5)

27

 

➡️

JGM (Jobgodkendelsesmodul)

STAR (5)

34

 

➡️

WIDK (WorkInDenmark)

Virksomhed (24)

  • (CVR nummer)

Jobannonce-Portal

➡️

Portal

Virksomhed (24)

  • (CVR nummer)

 

➡️

Virksomhed

Request Headers Guide

For at foretage kald til STARs service skal man udfylde request headers korrekt, hvilket er baseret på de rettigheder og roller, som man har fået tildelt i IAM. De skal følge følgende format:

ActiveOrganisation (x-activeOrganisation)

{ "OrganisationType": 0, "OrganisationCode":"string" }

RequestUserMetadata (x-requestUserMetadata)

{ "RequestUserStructure": { "UserFullName":"string", "RequestUserType": 0, "UserEmail": null, "UserIdentifier":"string" }, "RequestOrganisationStructure": { "OrganisationType": 0, "OrganisationCode":"string" }, "RegistrationDateTime":"2023-06-12T13:01:56.0362963+02:00" }

Nedenstående to tabeller giver et overblik over, hvordan de forskellige aftagere af Virksomhedsindsats skal udfylde disse request headers, for at få adgang til STARs services (primært rettet mod kald til JobannonceService og dens dertilhørende jobannonce roller).

 

ActiveOrganisation (SecurityContext.ImpersonatedAuthority)

 

KSS, Jobcenter

KSS, A-Kasse

Virksomhed

HR-system

Portal

 

KSS, Jobcenter

KSS, A-Kasse

Virksomhed

HR-system

Portal

OrganisationType

8 (Jobcenter)

2 (AKasse)

 

24 (Virksomhed)

24 (Virksomhed)

24 (Virksomhed)

OrganisationCode

Jobcenterkode (fx. 10100)

A-kassekode (fx. 15)

CVR

CVR for systemets bruger

CVR for portalens bruger

RequestUserMetadata (SecurityContext.CallingAuthority)

 

KSS, Jobcenter

KSS, A-Kasse

Virksomhed

HR-system

Portal

 

KSS, Jobcenter

KSS, A-Kasse

Virksomhed

HR-system

Portal

RequestUserStructure.UserFullName

Sagsbehandlers navn

Sagsbehandlers navn

Virksomhedens kontaktpersons navn

Systemets kontaktpersons navn

Portalbrugerens navn

RequestUserStructure.RequestUserType

2 (Sagsbehandler)

2 (Sagsbehandler)

4 (Medarbejder)

3 (System)

4 (Medarbejder)

RequestUserStructure.UserEmail

Sagsbehandlers email

Sagsbehandlers email

Virksomhedens kontaktpersons email

Systemets kontaktpersons email

Portalbrugerens email

RequestUserStructure.UserIdentifier

Udfyld med selvvalgt identifier som I skal kunne identificere brugeren ud fra

Udfyld med selvvalgt identifier som I skal kunne identificere brugeren ud fra

Udfyld med selvvalgt identifier som I skal kunne identificere brugeren ud fra

Udfyld med selvvalgt identifier som I skal kunne identificere brugeren ud fra

Udfyld med selvvalgt identifier som I skal kunne identificere brugeren ud fra

RequestOrganisationStructure.OrganisationType

Hvis,

  • Jobcentermedarbejder:
    8 (Jobcenter)

  • Kommunalmedarbejder:
    7 (Kommune)

  • Anden aktør medarbejder:
    4 (AndenAktoer)

Hvis,

  • Jobcentermedarbejder:
    8 (Jobcenter)

  • Kommunalmedarbejder:
    7 (Kommune)

  • Anden aktør medarbejder:
    4 (AndenAktoer)

24 (Virksomhed)

24 (Virksomhed)

24 (Virksomhed)

RequestOrganisationStructure.OrganisationCode

Hvis,

  • Jobcentermedarbejder: Jobcenterkode (fx. 10100)

  • Kommunalmedarbejder: Kommunekode (fx. 751)
    Anden aktør medarbejder:
    CVR nummer (fx. 32435465)

Hvis,

  • Jobcentermedarbejder: Jobcenterkode (fx. 10100)

  • Kommunalmedarbejder: Kommunekode (fx. 751)
    Anden aktør medarbejder:
    CVR nummer (fx. 32435465)

CVR

CVR for systemet

CVR for portalen

Rettighedsstyring

Rettighederne til en jobannonce har nogle mere specifikke, nødvendige valideringer, som hverken kan dækkes af AllowAccess-attributen eller AuthorizeScope-attributten. Dette beskrives i dette afsnit.

Jobannonce opretter er en ekstra klassificering, som opretteren af jobannoncen får, når opretteren kalder ind.
Hvis du kalder ind som f.eks. et jobcenter og jobcenteret ER opretteren af jobannoncen, vil du blive klassificeret som “Jobannonce opretter”.
Hvis du kalder ind som f.eks. et jobcenter og jobcenteret IKKE er opretteren af jobannoncen, vil du blive klassificeret som “Jobcenter”.

Læserettigheder

Baseret på den tildelte klassificering, får man følgende læserettigheder:

 

Jobannonce opretter

JGM
(STAR)

A-kasse

Jobcenter

WIDK
(STAR)

Portal
(Virksomhed)

Virksomhed

 

Jobannonce opretter

JGM
(STAR)

A-kasse

Jobcenter

WIDK
(STAR)

Portal
(Virksomhed)

Virksomhed

Hent jobannonce [udgivet]

URL: /v2/Jobannonce/{id}

Hent jobannonce [ikke udgivet]

URL: /v2/Jobannonce/{id}

Hent jobannonce historik

URL: /v2/Jobannonce/{id}/historik

Jobannonce logo [udgivet]

URL: /v2/Jobannonce/{id}/logo

Jobannonce logo [ikke udgivet]

URL: /v2/Jobannonce/{id}/logo

Jobannoncevisninger

URL: /v2/Jobannonce/visninger

Søg på jobannoncer

URL: /v2/Jobannonce/soeg

Forhåndvisning af jobannonce

URL: /v2/Jobannonce/billet/{billetId}

Skriverettigheder

Baseret på den tildelte klassificering, får man følgende skriverettigheder:

 

Jobannonce opretter

JGM
(STAR)

A-kasse

Jobcenter

WIDK
(STAR)

Portal
(Virksomhed)

Virksomhed

 

Jobannonce opretter

JGM
(STAR)

A-kasse

Jobcenter

WIDK
(STAR)

Portal
(Virksomhed)

Virksomhed

Opret jobannonce

URL: /v2/Jobannonce

-

Opret jobannonce på vegne af andre

URL: /v2/Jobannonce

-

Luk jobannonce

URL: /v2/Jobannonce/{id}/luk

Slet jobannonce

URL: /v2/Jobannonce/{id}

Opdater jobannonce

URL: /v2/Jobannonce/{id}

Opret billet til jobannonce

URL: /v2/Jobannonce/billet

Inkrementer visninger på jobannonce

URL: /v2/Jobannonce/{id}/inkrementer-visninger

Supplerende materialer

Herunder findes supplerende materialer, som kan bruges til især at forstå sammenhængen mellem SecurityContext og sikkerhedsmodellen i STAR, som i høj grad afhænger af request headers.

Request headers og SecurityContext

image-20240219-131322.png

Med udgangspunkt i STARs sikkerhedsmodel (STARs sikkerhedsmodel ), som benyttes af alle nuværende forretningsområder, har vi lavet følgende opklarende mapping mellem de parametre, som skal gives med i et request (se eksempel fra StarDebugger i udklip herover), og de parametre, som STAR arbejder med i koden gennem SecurityContext objektet.

SecurityContext

D&S koncepter (brugt i Star.Debugger)

SecurityContext

D&S koncepter (brugt i Star.Debugger)

Caller

RequestStructure

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (RequestUserTypeIdentifier)

Caller.Email

RequestUserMetadata.RequestStructure.Email

Caller.FullName

RequestUserMetadata.RequestStructure.UserFullName

Caller.Identifier

RequestUserMetadata.RequestStructure.UserIdentifier

Caller.Roles

Roles (specific to ActiveOrganisation.OrganisationType)

CallingAuthority

RequestOrganisationStructure

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

CorrelationId

CorrelationId

ImpersonatedAuthority

ActiveOrganisation

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

SecurityContext eksempler

Herunder følger en række eksempler på, hvordan securityContext objektet ville se ud for de givne aftagere af STRAs service. Dette sker ved samme mapning som herover til elementerne i selve requestet. En mere udtømmende liste af eksempler kan findes i STARs sikkerhedsmodel (STARs sikkerhedsmodel)

Eksempel 1: En virksomhed kalder JobannonceService gennem JobAg
STARs sikkerhedsmodel | Jobnet for arbejdsgivere

Caller

RequestStructure

Værdi

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (RequestUserTypeIdentifier)

Virksomhedsmedarbejder (4)

Caller.Identifier

RequestUserMetadata.RequestStructure.UserIdentifier

Certifikat RID

ImpersonatedAuthority

ActiveOrganisation

 

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

JobAg (10)

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Star (5)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

CVR-nummer

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Virksomhed (24)

 

Eksempel 2: En virksomhed kalder JobannceService

Caller

RequestStructure

Værdi

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (RequestUserTypeIdentifier)

Virksomhedsmedarbejder (4)

Caller.Identifier

RequestUserMetadata.RequestStructure.UserIdentifier

Certifikat RID

ImpersonatedAuthority

ActiveOrganisation

 

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

CVR-nummer

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Virksomhed (24)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

CVR-nummer

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Virksomhed (24)

 

Eksempel 3: En virksomhed kalder JobannonceService som en portalløsning

ImpersonatedAuthority

ActiveOrganisation

Værdi

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

Brugerens CVR-nummer

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Virksomhed (24)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

Systemets CVR-nummer

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Virksomhed (24)

Eksempel 4: En STAR supporter kalder JobannonceService gennem JobAg
STARs sikkerhedsmodel | Jobnet for arbejdsgivere

Caller

RequestStructure

Værdi

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (RequestUserTypeIdentifier)

2

Caller.Identifier

RequestUserMetadata.RequestStructure.UserIdentifier

Certifikat RID

ImpersonatedAuthority

ActiveOrganisation

 

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

JobAg (10)

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Star (5)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

JobAg (10)

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Star (5)

 

Eksempel 5: En A-Kasse kalder JobannonceService

ImpersonatedAuthority

ActiveOrganisation

Værdi

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

A-Kasse (2)

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Specifik a-kasse kode (fx. ASE - 94)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

A-Kasse (2)

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Specifik a-kasse kode (fx. ASE - 94)

 

Eksempel 6: Et jobcenter kalder JobannonceService gennem et KSS-system

ImpersonatedAuthority

ActiveOrganisation

Værdi

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

Jobcenter (8)

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Specifik jobcenter kode (fx. København - 10100)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

Jobcenter (8)

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Specifik jobcenter kode (fx. København - 10100)

 

Eksempel 7: En kommune kalder JobannonceService gennem et KSS-system

ImpersonatedAuthority

ActiveOrganisation

Værdi

ImpersonatedAuthority.OrganisationCode

ActiveOrganisation.OrganisationCode

Kommune (7)

ImpersonatedAuthority.OrganisationType

ActiveOrganisation.OrganisationType

Specifik kommune kode (fx. Haderslev - 510)

CallingAuthority

RequestOrganisationStructure

 

CallingAuthority.OrganisationCode

RequestUserMetadata.RequestOrganisationStructure.OrganisationCode

Kommune (7)

CallingAuthority.OrganisationType

RequestUserMetadata.RequestOrganisationStructure.OrganisationType

Specifik kommune kode (fx. Haderslev - 510)