Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

I STAR har vi en sikkerhedsmodel, STARs sikkerhedsmodel, som beskriver en sikkerhedsmodel for alle forretningsdomænerne. Sikkerhedsmodellen for jobannonceuniverset tager udgangspunkt i denne. For at kunne forstå følgende tanker om sikkerhedsmodellen forslåes det, at man kigger STARs sikkerhedsmodel igennem.

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

Dokumentation af sikkerhedsmodel pba. IAM og JWT tokens:

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 vores 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.
Den der er relevant, er den der 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 må ikke oprette jobannoncer på vegne af andre virksomheder, mens et jobcenter gerne må.

For et givent kald til vores 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 /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

JobCenter (8)

  • (Jobcenter kode)

➡️

JobCenter

AKasse (2)

  • (A-Kasse kode)

➡️

UnemploymentFund

STAR (5)

27

➡️

JGM (Jobgodkendelsesmodul)

STAR (5)

34

➡️

WIDK (WorkInDenmark)

Virksomhed (24)

  • (CVR nummer)

Jobannonce-Portal

➡️

Portal

Virksomhed (24)

  • (CVR nummer)

➡️

Company

Request Headers Guide

For at foretage kald til vores 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 vores 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

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

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

Skal angives på denne form, hvor alle x skal erstattes af tal eller bogstaver:

CVR:xxxxxxxx-UUID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

CVR værdien skal være CVR angivet på certifikatet, UUID skal være certifikatets UUID.

Hvis OCES2 certifikat er formen, hvor FID skal være certifikatets FID:

CVR:xxxxxxxx-FID:xxxxxxxx

Skal angives på denne form, hvor alle x skal erstattes af tal eller bogstaver:

CVR:xxxxxxxx-UUID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

CVR værdien skal være CVR angivet på certifikatet, UUID skal være certifikatets UUID.

Hvis OCES2 certifikat er formen, hvor FID skal være certifikatets FID:

CVR:xxxxxxxx-FID:xxxxxxxx

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.

Bemærk: ‘Jobannonce opretter’ er blot en måde at klassificere kombinationen af certifikat, organisationstype og organisationskode, der har oprettet jobannoncen.

Læserettigheder

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

Jobannonce opretter

JGM
(STAR)

A-kasse

(UnemploymentFund)

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

(UnemploymentFund)

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 vi arbejder med i koden gennem SecurityContext objektet.

SecurityContext

D&S koncepter (brugt i Star.Debugger)

Caller

RequestStructure

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (https://starwiki.atlassian.net/wiki/spaces/FYS/pages/48890127/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 vores 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
https://starwiki.atlassian.net/wiki/spaces/FYS/pages/13926415/STARs+sikkerhedsmodel#Jobnet-for-arbejdsgivere

Caller

RequestStructure

Værdi

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (https://starwiki.atlassian.net/wiki/spaces/FYS/pages/48890127/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 (https://starwiki.atlassian.net/wiki/spaces/FYS/pages/48890127/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

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
https://starwiki.atlassian.net/wiki/spaces/FYS/pages/13926415/STARs+sikkerhedsmodel#Jobnet-for-arbejdsgivere

Caller

RequestStructure

Værdi

Caller.CallerType

RequestUserMetadata.RequestStructure.RequestUserType (https://starwiki.atlassian.net/wiki/spaces/FYS/pages/48890127/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)

  • No labels