Introduktion

Formål med dokumentet

Nærværende dokument henvender sig til nuværende og kommende brugere af STS (Secure Token Service).

Formålet med dokumentet er at give en forståelse af STS som produkt:

Derudover giver dokumentet et overblik over de af STS understøttede brugsscenarier med udgangspunkt i konkrete eksempler og med links til mere uddybende dokumentation af disse.

Læsevejledning og forudsætninger

Dokumentet henvender sig primært til IT arkitekter, udviklere og forretningskonsulenter med fokus på sikkerhedsinfrastrukturer og applikationssikkerhed i forhold til National Service Platform (NSP).

Det forudsættes at læseren har en forståelse for grundlæggende koncepter og begreber indenfor applikationssikkerhed herunder certifikater (OCES), sikkerhedsprotokoler f.eks. Den Gode Webservice (DGWS), SAML og OIO IDWS og kendskab til sikkerhedsbilletter f.eks. Java Webtokens (JWT), SOSI Idkort og SAML billetter.

Dokumentet vil løbende linke til ekstern dokumentation, hvor dette er relevant.

Hvad er STS?

STS er i dette dokument synonymt med en konkret service. Men STS kan også opfattes som et koncept: I denne sammenhæng står STS for Secure Token Server.

Dette er et kendt begreb indenfor IT sikkerhedsarkitekturer og beskriver en service, hvis formål er

Ideen med en Secure Token Server er, at der kan opnåes en afkobling mellem serviceanvender og serviceudbyder som illustreret i figuren nedenfor.

Som figuren illustrer, så behøver en serviceudbyder og serviceanvenderen ikke at etablere et kendskab hinanden, inden serviceanvenderen kan gøre brug af serviceudbyderen. Det, at en serviceanvender i kaldøjeblikket er i besiddelse af en sikkerhedsbillet udstedt og signeret af en Secure Token Server, som serviceudbyderen stoler på (trust) er nok til, at serviceudbyderen kan være sikker på, at det er ok at svare på et servicekald. Serviceudbyderen stoler således på serviceanvenderen, fordi serviceudbyderen stoler på Secure Token Server (se pil nr. 4 i tegningen ovenfor).

Serviceanvenderen skal identificerer sig overfor Secure Token Server for at få udstedt sin sikkerhedsbillet. Secure Token Server skal således enten kende serviceanvenderen direkte eller præsenteres for en sikkerhedsbillet, der identificerer serviceanvenderen, og som er udstedt af troværdig tredjepart (en anden Secure Token Server eller Identity Provider), som Secure Token Server stoler på.

Det er muligt, at serviceanvenderen kan have behov for, at sikkerhedsbilletten indeholder særlige oplysninger, som serviceanvenderen ønsker, at serviceudbyderen skal vide f.eks. for at få adgang til specielle services/data hos serviceudbyderen. Serviceanvenderen kan bede om, at disse oplysninger inkluderes ved at medsende ekstra påstande (claims) i sin forespørgsel til Secure Token Server (pil nr. 1 i tegningen ovenfor).

I visse tilfælde kan en Secure Token Server kræve, at en serviceanvender specificerer, hvad sikkerhedsbilletten skal anvendes til (intended audience). Det er op til Secure Token Server at beslutte, om de medstende claims og/eller intended audience kan opfyldes. Secure Token Server sammensætter sikkerhedsbilletten udfra serviceanvenderens identitet, eventuelle ønsker fra serviceanvender (claims+intended audience) samt prædefinerede konfigurationer. Nogle oplysninger kan Secure Token Server selv være i besiddelse af, men det er også muligt, at Secure Token Server betjener sig af en eller flere eksterne services til at slå ekstra oplysninger op om serviceanvenderen eller at verificere oplysninger eller claims (pil nr 2 i tegningen ovenfor).

Secure Token Server sammensætter sikkerhedsbilletten og returnerer denne til kalderen (pil nr. 3 i tegningen ovenfor).

Sikkerhedsbilletten kan indeholde en række tekniske oplysninger, der tilsammen definerer gyldigheden af sikkerhedsbilletten. Dette kunne f.eks. være:

Derudover kan sikkerhedsbilletten indeholde oplysninger (attributter) om serviceanvenderen. Dette kunne f.eks. være

STS på National Service Platform (NSP)

Der findes i dag en række forretningsservice på NSP. Disse services dækker forskellige formål - fra datadeling via Dokumentdelingsservice (DDS) til verifikation af behandlingsrelation via Behandlingsrelationsservice (BRS).

Selvom formålene for NSP services er forskellige, så har de en række fællestræk f.eks. i forhold til autentificering. Det betyder dog ikke at alle NSP services skal validere alle anvenderes certifikater og tilhørende information. Dette vil være et stort ansvar at fordele på så mange komponenter. Derfor er der en fælles komponent, som kan udstede adgangsgivende billetter, som kun kræver simpel verifikation for gyldighed i de konkrete NSP services.

På NSP hedder servicen Security Token Service (STS).

Der er i skrivende stund to aktuelle sikkerhedsprotokoller i spil på NSP:

I begge tilfælde skal der i kaldet til den konkrete NSP service forevises en sikkerhedsbillet udstedt af STS. STS arbejder med følgende typer af sikkerhedsbillletter:

Anvendelse af STS på NSP

Som beskrevet i afsnittet ovenfor, så skal en potentiel anvender til en NSP service først integrere med STS og identificere sig overfor denne med henblik på at få udstedt en til formålet passende sikkerhedsbillet.

På NSP er anvenderes autentifikation overfor STS baseret på digitale certifikater. Disse skal overholde den fælles offentlige standard for certifikater kaldet OCES: Offentlige Certifikater til Elektronisk Service. OCES certifikater indeles i fire hovedgrupper, hvoraf de tre anvendes på NSP:

Som nævnt tidliger, så er de væsentligste opgaver for STS at udstede, validere og forny/omveksle sikkerhedsbilletter.

I det følgende afsnit præsenteres et overblik over NSP STS:

Efterfølgende vil vi beskrive de tre overordnede anvendelsesområder, som er understøttet af STS:

De enkelte beskrivelser vil have links til mere detaljeret dokumentation.

Overblik over STS

I diagrammet nedenfor vises et overblik over STS.

De af STS udstillede services ses til venstre i tegningen. De enkelte services falder inden for de 3 overordnede områder for STS:

De viste services i figuren udenfor er uddybet i tabellen nedenfor.

ServiceSikkerhedsniveauBeskrivelse
DGWS
/sts/services/NewSecurityTokenServiceNiveau 3-4

Udstedelse af SOSI Idkort.

/sts/services/SecurityTokenServiceNiveau 3-4

Legacy udgave af ovennævnte service (uden erstatning af NameId).

Benyt NewSecurityTokenService hvis muligt

Medarbejderomveksling
/sts/services/Sosi2OIOSamlNiveau 4

Omveksler SOSI Idkort til OIO Saml sikkerhedsbillet rettet mod et specifikt audience, f.eks. sundhed.dk.

Bemærk, at det SOSI Idkort, der veksles, skal være udstedt af /sts/services/NewSecurityTokenService

/sts/services/OIOSaml2SosiNiveau 5

Omveksler OIO Saml sikkerhedsbillet til SOSI Idkort.

Bemærk, at den OIO Saml sikkerhedsbillet, der veksles, skal være signeret af troværdig tredjepart (nemlogin)

Borgeromveksling
/sts/services/Bst2IdwsNiveau 5

Omveksler OIO Saml bootstrap token til OIO IDWS sikkerhedsbillet rettet mod et givet audience, f.eks. FMK, Dokumentdelingsservice eller MinSpærring.

Bemærk, at bootstrap token skal være signeret af troværdig tredjepart (nem-login)

/sts/services/JWT2IdwsNiveau 5

Ombytter JSON Web token (JWT) til OIO IDWS sikkerhedsbillet rettet mod et givet audience, f.eks. FMK, Dokumentdelingsservice eller MinSpærring.

Bemærk, at JWT tokenet skal være signeret af troværdig tredjepart (pt. en OID connector)

/sts/services/JWT2OIOSamlNiveau 5

Omveksler JSON Web token (JWT) til OIO Saml sikkerhedsbillet rettet mod et specifikt audience, f.eks. forløbsplaner.dk

Bemærk, at JWT tokenet skal være signeret af troværdig tredjepart (pt. en OID connector)


Anvendere af STS skal sættes op og tilføjes til STS konfiguration, inden de kan begynde at anvende udstedelses- og omvekslingsservices. Anvendere identificeres vha CVR nummer, som er inkluderet i OCES certifikater. Når en anvender autentificerer sig overfor STS vha et OCES certifikat, så konsulterer STS sin konfiguration og tjekker, om det pågældende CVR nummer er konfigureret, og om det f.eks. har adgang til det specificerede intended audience.

Som nævnt i de forgående afsnit, så identificerer anvendere sig overfor STS ved hjælp af OCES certifikater. Alle OCES-certifikater udstedes af Nets DanID der varetager denne opgave for Digitaliseringsstyrelsen. OCES certifikater kan tilbagekaldes (revokeres), hvis f.eks. den private nøgle bliver kompromiteret. Tilbagekaldte certifikater publiceres på revokeringslister (CRL = Certificate Revocation Lists). Revokeringslisterne hentes af komponenten CRA (se tegning) og opbevares i en database (CRA database), som tjekkes i forbindelse med kald af STS udstedelses- eller omvekslingsservices. Således kan revokerede/spærrede certifikater ikke anvendes til at få udstedt/vekslet sikkerhedsbilletter.

STS indeholder synkroniseret data fra følgende registre:

STS har også integration til de to services PID-CPR og RID-CPR udbudt af Nets. Denne integratoin muliggør verifikation af et CPR nummers sammenhæng med PID henholdsvis RID. Disse egenskaber er f.eks tilstede i MOCES certifikater og OIO Saml sikkerhedsbilletter udstedt af nemlogin.

Digitaliseringsstyrelsens fuldmagtsregister giver borgere i Danmark mulighed for at tildele fuldmagt til venner og pårørende til at opnå dataadgang. Borgere kan vedligeholde deres fuldmagtstildelinger via portalen http://borger.dk. I forbindelse med borgerbilletter har STS via fuldmagtsregisteret mulighed for at tjekke claims om fuldmagt, som angives i forbindelse med omveksling af borgerbilletter.

Anvendelseområder

De ovenfor nævnte anvendelsesområder uddybes i følgende afsnit.

Anvendelse: DGWS


Formålet med STS er at sikre identiteten af og autorisere brugere der ønsker at tilgå services inden for en føderation [SOSI] på sundhedsdatanettet.

Snitfladen SecurityTokenService er en legacy udgave af NewSecurityTokenService. I NewSecurityTokenService overskrives NameID/AlternativeIdentifier, hvilket vil sige at anvender ikke kan bestemme indholdet heraf.

Snitfladerne beskrives detaljeret her:
STS - Guide til anvendere - Signering af id-kort 

Som et

Ønsker jeg at

Så jeg kan

IT system

få udstedt et SOSI Idkort på baggrund af et certifikat (MOCES/VOCES/FOCES)

fortage et servicekald mod en DGWS beskyttet forretningsservice på NSP


Anvendelse: DGWS

Som et

Ønsker jeg at

Så jeg kan

IT system

få udstedt et SOSI Idkort på baggrund af et certifikat (MOCES/VOCES/FOCES)

fortage et servicekald mod en DGWS beskyttet forretningsservice på NSP


Anvendelse: DGWS

Som et

Ønsker jeg at

Så jeg kan

IT system

få udstedt et SOSI Idkort på baggrund af et certifikat (MOCES/VOCES/FOCES)

fortage et servicekald mod en DGWS beskyttet forretningsservice på NSP




Adgang til STS

Når en anvender skal i gang med at bruge STS på NSP skal følgende være på plads:

Der kan findes test OCES certifikater til at komme i gang med her. Anvendere kan desuden kontakte NETS med henblik på at få en tjenesteudbyderaftale, hvilket vil gøre det muligt at få udstedt egne OCES certifikater til både TEST og PRODUKTION.



Introduktion

Formål

Denne guide har som formål at give et overblik over STS.

Nærværende dokument henvender sig til nuværende og kommende brugere af STS (Security Token Service) og formålet med dokumentet er, at give hjælp til disse i arbejdet med integration mod STS. Dette sker ved en overordnet gennemgang af de udstillede services og beskrivelse af specifikke elementer, der er væsentlige for at opnå en basal forståelse på anvenderniveau. Gennemgangen kan være understøttet af ekstern dokumentation. STS og relaterede services udstilles som webservices og i produktion altid på sundhedsdatanettet, hvilket kræver separat tilslutning.

Begreber

AnvendersystemDet IT-system som anvender en STS snitflade
BrugerDen bruger som via et klient IT-system anvender STS
TrustHvem stoler vi på som signerende part på en indgående billet.
ModtagerHvilke systemer kan anvende den billet der udstedes af STS.






Beskrivelse

Formålet med STS er at sikre identiteten af og autorisere brugere der ønsker at tilgå services inden for en føderation [SOSI] på sundhedsdatanettet.

I dette afsnit beskrives de væsentlige faser, som eksisterer ifbm. behandlingen af en forespørgsel til STS. Undervejs vil de væsentlige begreber og elementer, der indgår i en forespørgsel være forklaret. Der henvises endvidere til yderligere dokumentation, hvor det er relevant, så helheden og meningen fremgår.

Grafisk fremstilling og sammenhængen

Arkitekturoverblik

Oversigt over snitflader STS

ServiceSikkerhedsniveauBeskrivelse
Signering
/sts/services/NewSecurityTokenServiceNiveau 3-4

Udstedelse af STS-signeret id-kort.

/sts/services/SecurityTokenServiceNiveau 3-4

Legacy udgave af ovennævnte service (uden erstatning af NameId). Benyt NewSecurityTokenService hvis muligt

Medarbejder-omveksling
/sts/services/Sosi2OIOSamlNiveau 4

Ombytter STS-signeret id-kort til OIOSaml-token rettet mod et specifikt audience, f.eks. sundhed.dk. Bemærk at dette id-kort skal være udstedt af /sts/services/NewSecurityTokenService

/sts/services/OIOSaml2SosiNiveau 5

Ombytter OIOSaml (nem-login) token til signeret id-kort. Token skal være signeret af troværdig tredjepart
(nemlogin)

/sts/services/JWT2OIOSamlNiveau 5Ombytter JSON Web token til OIOSaml-token rettet mod et specifikt audience, f.eks. forløbsplaner.dk
Borger-omveksling
/sts/services/Bst2IdwsNiveau 5

Ombytter OIOSaml bootstrap token til signeret identitytoken rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart(nem-login)

/sts/services/JWT2IdwsNiveau 5

Ombytter JSON Web token til signeret identity-token rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (pt. en OID connector)

Læsevejledning og forudsætninger

En typisk anvender af STS, som kan drage nytte af dette dokument er karakteriseret ved eksempelvis at være leverandør af et lægepraksissystem eller leverandør af et fagsystem implementeret på et hospital, f.eks. et laboratoriesystem eller et medicineringssystem.

Id-kort spiller en central rolle for single-signon scenariet, der understøttes af STS, og det er en absolut nødvendighed med en god forståelse af begreberne for at arbejde med STS. Id-kortet anvendes ifm. autentifikation og autorisation af en bruger, der opererer på sundhedsdatanettet via en serviceaftager.

Specifikationen af DGWS [DGWS] har en god og uddybende beskrivelse af, hvordan et id-kort er konstrueret og kan anvendes i praksis.

Definitioner og referencer

ReferenceBeskrivelse
DGWShttps://www.medcom.dk/standarder/webservice-standarder/den-gode-webservice
SOSIhttp://www.sosi.dk/twiki/bin/view/ProjectManagement/SOSITechExecutiveOverview
SOSIEXSOSI Executive Summary - (forklaring af føderationsbegrebet), Lakeside:
http://www.sosi.dk/twiki/bin/view/ProjectManagement/SOSITechExecutiveOverview


Dokument historik

DatoAnsvarligBeskrivelse
04/09-2020KIT

Sammenskrivning af oprindelige anvendergudier og yderligere informationer

STS begreber

Identitetsservice

Adgang til NSP-komponenters services er begrænset med autentificering. Denne autentifikation er baseret på OCES-certifikater, hvormed anvendere er i stand til at identificere sig. Det betyder dog ikke at alle services skal validere alle anvenderes certifikater og tilhørende information. Dette vil være et stort ansvar at fordele på så mange komponenter. Derfor er der en fælles komponent, som kan udstede adgangsgivende billetter, som kun kræver simpel verifikation. En sådan komponent betegnes generelt som en "Identitetsservice" eller IdP (IdentityProvider). På NSP hedder servicen Security Token Service (STS).

Introduktionen af STS betyder at en anvender udelukkende skal identificere sig overfor STS med sit OCES-certifikat og får herefter et id-kort, der er underskrevet med (STS) føderationens certifikat. Dette id-kort agerer som nøglen, der identificerer anvenderen, og kan give adgang til de andre komponenter på NSP. Komponenternes ansvar er derfor kun at kende til STS'ens ene certifikat og verificere dette i id-kortet. STS verificerer og beriger desuden id-kortet med en række af attributter. F.eks. verificeres slutbrugerens personnummer og dennes autorisation.

Føderation, ombytning af id-kort og servicekald

Følgende er et eksempel på hvad der sker i de forskellige skridt når en anvender ombytter sit id-kort til et signeret af STS:

  1. Anvendersystemet bygger et id-kort indeholdende informationer om brugeren/systemet og signerer det med brugerens/systemets certifikat.
  2. Id-kortet sendes til STS, der tjekker at signaturen er korrekt og baseret på et OCES-certifikat udstedt under det samme rodcertifikat som STS's eget.

  3. Korrektheden af attributter som personnummer og autorisation verificeres af STS. Ydermere tjekkes det om certifikatet er spærret for anvendelse.

  4. STS opbygger et nyt id-kort med de samme informationer og signerer det med STS'ens eget certifikat. Den offentlige nøgle i dette certifikat er kendt af alle komponenter i føderationen.
  5. STS sender det nye id-kort retur til anvendersystemet, der gemmer dette i brugerens/systemets session.
  6. Anvendersystemet indsætter nu det nye id-kort i headeren på alle fremtidige forespørgelser mod NSP-komponenter.
  7. NSP-komponenten verificerer at id-kortet er signeret af føderationens certifikat, og stoler herefter på udvalgte dele af id-kortet.


Bemærk at et id-kort kan anvendes til flere forespørgelser, så længe det endnu ikke er udløbet.

Offentlige Certifikater til Elektronisk Service

Til generel identifikation, dels som anvender overfor STS og dels for id-kortet overfor services på NSP, kræves digitale certifikater. På NSP skal disse overholde den fælles offentlige standard for certifikater. Standarden hedder OCES, Offentlige Certifikater til Elektronisk Service.

OCES-certifikater

OCES certifikater indeles i fire hovedgrupper, hvoraf de tre anvendes på NSP:

Den sidste gruppe af certifikater betegnes som Personcertifikater, og udstedes til identifikation af privatpersoner.

Digitaliseringsstyrelsen og Nets DanID

Alle OCES-certifikater udstedes af Nets DanID der varetager denne opgave for Digitaliseringsstyrelsen. Nets DanID har et rodcertifikat og herunder en række krydscertifikater som bruges til at udstede OCES-certifikaterne. Specielt kan det nævnes at det certifikat, en STS service er konfigureret med, blot er endnu et udstedt certifikat, ganske som alle andre udstedte certifikater. Dog definerer dette certifikat den omtalte føderation. I praksis er det anvender-bibliotekerne Seal.Java og Seal.Net, der kender til dette certifikat og dermed kan verificere id-kort med en signatur, der stammer fra certifikatet.

Fælles offentlig brugerstyring (NemLog-In)

Fællesoffentlig brugerstyring skal gøre det digitale Danmark mere sikkert, mindske investeringerne i infrastruktur for offentlige myndigheder og skabe bedre service for borgerne. Dette sker ved at lade en række webapplikationer og webservices indgå i en fælles føderation (sikkerhedskontekst).

Brugeren autentificeres ved anvendelse af NemLog-in og får hermed adgang til alle applikationer og services inden for NemLog-in føderationen (Single sign-on). Autentifikation med NemLog-In kan enten være baseret på NemId (papkort) eller anvendelse af digital signatur (OCES-certifikater).

NemLog-In er leveret af NNIT og har Digitaliseringsstyrelsen som operatør og CSC som driftsleverandør.

En oversigt over relevante materialer findes på http://www.digst.dk/Loesninger-og-infrastruktur/NemLogin/Det-nye-nemlogin. En kort intro til NemLog-In kan ses under http://www.digst.dk/Loesninger-og-infrastruktur/NemLogin/Det-nye-nemlogin.

Adgang til NemLog-in føderationen

Når en uidentificeret bruger tilgår en webapplikation, der indgår i NemLog-In føderationen, foretages autentifikation ikke af webapplikationen selv, men derimod med anvendelse af NemLog-In som Identity Provider (IdP).

Brugeren videredirigeres til IdP'en i form at et autentifikationsrequest. IdP'en efterspørger om nødvendigt credentials fra brugeren (i form af digitalt certifikat eller papkort) og dirigerer herefter brugeren tilbage til webapplikationen med et krypteret token.

Det krypterede NemLog-in token er altid målrettet en given webapplikation. Det er signeret af NemLog-in og krypteret med webapplikationens offentlige nøgle og kan derfor kun anvendes af denne applikation. Dekryptering åbner op for at aflæse de indeholdte informationer omkring brugerens identitet.

Applikationen har tillid til NemLog-in (trust) og kan derfor stole på de oplysninger dette token indeholder.

Undervejs etableres en browser-session med NemLog-In IdP'en, som gør det muligt at undgå gentagen afgivelse af credentials ved tilgang til en anden webapplikation indenfor føderationen (Single sign-on). Samme session mellem bruger og IdP kan således give adgang til flere webapplikationer - ved at føde et NemLog-In token for hver applikation.

NemLog-in token

Et NemLog-In token er et eksempel på en OIO-SAML assertion. OIO-SAML er en dansk profilering af den internationale SAML 2.0 standard. Dvs. man har taget standarden og skræddersyet den til danske forhold - herunder f.eks. hvordan cpr- og cvr-numre kan anvendes til at identificere personer og virksomheder.

Endvidere findes en OCES subprofil, som beskriver andre relevante ting f.eks. at en OIO-SAML assertion er udstedt på baggrund af et OCES-certifikat. Indholdet er beskrevet i OIO-SAML-Profil.

Den udstedte OIO-SAML assertion er møntet på et enkelt audience (system) - ved kryptering sikres det, at det kun kan anvendes af det tilsigtede system. Dette token kan derfor betragtes som en "personlig billet" der giver en bruger adgang til et givet system.

En OIO-SAML assertion (og dermed et NemLog-In token) udstedt på baggrund af OCES-certifikat indeholder følgende elementer:

Attributter i et NemLog-In token

Et token indeholder en række attributter, hvoraf nogle er obligatorisk for alle OIO-SAML assertions, mens andre kun er relevante, hvis de er udstedt på baggrund af OCES-certifikater (som ifm. billetomveksling).

Attributter som er obligariske for alle OIO-SAML assertions:

For assertions udstedt på baggrund af OCES-certifikater er yderligere en række attributter obligatoriske:

OIO-SAML beskriver yderligere nogle relevante attributter, som ikke er obligatoriske:

SOSI Id-kort

I modsætning til de generelle OIO-SAML assertions udstedt af NemLog-In, er et SOSI id-kort skræddersyet til anvendelse i fagsystemer indenfor sundhedsvæsenet. Der er nogle væsentlige forskelle mellem SOSI id-kort og OIO-SAML tokens:

STS billetomveksling kan anvendes til at veksle mellem de to slags tokens. Det muliggør at autentifikation (udstedelse af id-kort) overfor STS'en kan omveksles til adgang til systemer indenfor NemLog-In føderationen som f.eks. sundhed.dk.

Opbygning

Id-kortet er det bærende element ifm. signering i STS'en. Som beskrevet i platformsintroduktionen er id-kortet et XML-dokument der indeholder informationer om den person, virksomhed eller applikation, som foretager en forespørgsel mod en NSP-service. Når man ombytter et id-kort i STS'en, placeres id-kortet under SOAP Body elementet. Når man medsender et id-kort ifm. kald af NSP-services placeres det under SOAP Header elementet.


Attributter

Et id-kort består af en mængde attributter som anvendersystemet udfylder. En del af disse attributter bliver verificeret af STS, og nogle bliver valideret af komponenterne. Verifikationen i STS gennemgås i næste hovedafsnit.

Hvis der er tale om et brugerid-kort er følgende attributter også tilstede

Certifikat og signatur

Når et id-kort signeres, enten af anvenderen eller af STS, bliver certifikatets offentlige nøgle lagt ind på id-kortet og kortet signeres med certifikatets private nøgle. Seal-bibliotekerne udfører disse opgaver for een. Hvis man ønsker at vide hvordan det praktisk foregår, så er hele processen beskrevet i "Den Gode Webservice" [DGWS].

Billetomveksling

NemLog-In token til id-kort

STS kan anvendes til omveksling af særlige OIO-SAML assertions til et ækvivalent id-kort der kan anvendes til at få adgang til NSP-platformen. Visse oplysninger fremgår af et SOSI id-kort men ikke af et NemLog-In token. Disse skal derfor angives eksplicit i forespørgslen som supplerende information, i det omfang de ikke automatisk kan fastlægges.

Omveksling kræver:

Herudover kan man vælge at medsende brugerens fornavn/efternavn i forespørgslen, idet fornavnet ikke kan bestemmes ud fra en OIO-SAML assertion.

Såfremt omvekslingen går godt, vil slutresultatet være et STS-signeret id-kort med oplysninger sammensat fra NemLog-In token, supplerende info og opslag, som herefter kan benyttes som adgangsbillet til NSP-platformens services.

Validering af signaturer

STS'en verificerer at forespørgslen er signeret med et gyldigt certifikat (ikke udløbet, ikke spærret), som er udstedt af rodcertifikatet (eller af et af krydscertifikaterne).

STS'en verificerer at den indeholdte OIO-SAML assertion er signeret med et gyldigt certifikat (ikke udløbet, ikke spærret), som er udstedt af rodcertifikatet (eller af et af krydscertifikaterne). Herudover skal det være et certifikat som STS'en stoler på. STS'en er derfor konfigureret med trust af en eller flere kilder. I produktion stoles i skrivende stund alene på NemLog-In.

Håndtering af CPR-nummer

Brugerens CPR-nummer er valgfrit i en OIO-SAML assertion. Såfremt dette er medsendt, valideres korrektheden ved opslag ud fra det medsendte CvrRid. Alternativt vil det blive fremsøgt. Herved sikres at det returnerede id-kort altid indeholder et CPR-nummer, hvis ægthed er bekræftet.

Håndtering af autorisationsnummer og uddannelseskode

Hvis brugeren har en autorisation i henhold til autorisationsregisteret, skal denne være beskrevet i et STS-signeret id-kort med autorisationsnummer og uddannelseskode. Disse er ikke indeholdt i en OIO-SAML assertion, men kan være medsendt som supplerende information i billetomvekslingsforespørgslen.

Disse håndteres på følgende måde:

Det er den samme algoritme, der anvendes ved signering.

Id-kort til OIO-SAML assertion.

STS tilbyder ligeledes omveksling af id-kort til OIO-SAML assertions rettet mod udvalgte it-systemer. I forespørgslen angives:

Det angivne audience skal være kendt af STS'en. STS'en vil kvittere med en gyldig OIO-SAML assertion signeret af STS og rettet mod den angivne webapplikation. Denne assertion er baseret på oplysningerne i id-kortet, samt suppleret med information som STS er konfigureret med for den givne applikation.

Endvidere krypteres med webapplikationens offentlige nøgle, så token kun kan verificeres og anvendes til denne ene applikation. Det oprindelige id-kort medsendes evt. (afhænger af konfiguration) som en del af den returnerede assertion, så den webapplikation der kaldes har dermed direkte adgang til services på NSP-platformen uden at skulle foretage en omveksling.

Billetomvekslingen kan således anvendes af alle med adgang til NSP. Men kan kun veksle til en assertion som giver adgang til et system kendt og konfigureret i STS.

Konfiguration af audience i STS.

For at tilgå et tredjepartssystem (f.eks. sundhed.dk) via billetomveksling, skal dette være kendt af og konfigureret i STS. Konfigurationen omfatter:

Bemærk, at da det returnerede OIO-SAML token indeholder brugerens CPR-nummer sætter det visse juridiske begrænsninger (persondataloven) for hvilke webapplikationer det er muligt at konfigurere.

Anvendelse af billetomveksling

Billetomveksling kan anvendes af et fagsystem (f.eks. et EPJ-system), som allerede har et gyldigt id-kort for den aktuelle bruger, til at integrere med en fremmed webapplikation.

Integrationen foregår på følgende måde:

Hele processen kræver således gensidigt kendskab og aftale mellem STS og den eksterne webapplikation XYX, idet

  1. STS skal kende den eksterne applikation og være konfigureret med bl.a. dennes offentlige nøgle
  2. XYZ skal kende til STS'en som en troværdig IdP og dermed stole på assertions signeret af STS.

Verifikation

Når STS'en modtager en signeringsforespørgsel verificeres id-kortet og anvenderens certificat i flere skridt. Disse skridt er kort beskrevet i de følgende afsnit, og er yderligere uddybet i STS dokumentationen. Verifikationen betyder at komponenter kan stole på korrektheden af de nævnte attributer, hvis id-kortet er signeret af STS'en.

Gyldighed

Et id-kort er kun gyldigt i en bestemt periode. STS'en tjekker derfor at denne periode er oplyst på id-kortet og at det indeholder kaldstidspunktet. Dette gøres for at sikre at man ikke kan udstede et id-kort, der først bliver gyldigt en gang ude i fremtiden.

Et id-kort kan maksimalt være gyldigt i 24 timer, derfor tjekker STS at den ønskede gyldighedsperioden ikke er længere end 24 timer.

Certifikat

Det certifikat, som anvender har brugt til at signere id-kortet i forespørgslen, skal være signeret af Nets DanID's rodcertifikatet (eller af et af krydscertifikaterne). Da der findes flere gyldige sæt af disse (test og produktion), er det vigtigt at anvender har styr på hvilket sæt den kaldende STS er en del af.

Spærrelister

Selv om et certifikat er korrekt udstedt til føderationen, kan det godt blive nægtet adgang. Dette sker ved hjælp af en såkaldt blackliste, der indeholder certifikater, der ikke længere må anvendes. Denne liste vedligeholdes som en del af certifikatinfrastrukturen og anvendes af STS til at afvise certifikater, der f.eks. er blevet kompromiteret eller på anden måde har mistet deres autoritet.

CVR-nummer

STS verificerer at det angivne CVR-nummer matcher det CVR-nummer, der er angivet i certifikatet.

Personnummer

Hvis forespørgslen indeholder et brugerid-kort tjekkes at det angivne personnummer matcher det personnummer, der blev brugt da medarbejdercertifikatet blev udstedt. Verifikationen anvender en ekstern webservice til at finde det personnummer der er knyttet til CVR/RID-nummeret i certifikatet. Hvis der ikke var tilknyttet er CPR-nummer til certifikatet ved udstedelse, så kan dette certifikat ikke bruges til at få et signeret id-kort.

Autorisation

Hvis forespørgslen indeholder et brugerid-kort, så laves der et opslag i autorisationsregisteret for at finde den autorisation, som brugeren anvender. Hvis der er angivet en rolle og/eller et autorisationsID i forespørgelsen, anvendes disse til at udvælge autorisationen. I "STS Anvender dokumentet" er udvælgelsesalgoritmen beskrevet i detaljer. Den følgende liste beskriver de gængse situationer med angivelse af autorisation. Disse situationer er også indeholdt i medfølgende eksempler.

Den konkrete udformning af forespørgelsen til STS kan ses i eksemplerne.

Signering af id-kort

Adgang

TilgængeligKomponentversioner sts
Endpoint(s)

/sts/services/NewSecurityTokenService

/sts/services/SecurityTokenService

Beskrivelse af services

Udstedelse af STS-signeret id-kort.

Snitfladebeskrivelse og brug

Formålet med STS er at sikre identiteten af og autorisere brugere der ønsker at tilgå services inden for en føderation [SOSI] på sundhedsdatanettet.

Snitfladen SecurityTokenService er en legacy udgave af NewSecurityTokenService. I NewSecurityTokenService overskrives NameID/AlternativeIdentifier, hvilket vil sige at anvender ikke kan bestemme indholdet heraf.

Snitfladerne beskrives detaljeret her:
STS - Guide til anvendere - Signering af id-kort 

Medarbejder-Billetomveksling

Adgang

TilgængeligKomponentversioner sts
Endpoint(s)

/sts/services/OIOSaml2Sosi

/sts/services/Sosi2OIOSaml

/sts/services/JWT2OIOSaml

Beskrivelse af services

Kan veksle mellem OIOSaml (nem-login) token og signeret id-kort, hvor token skal være signeret af troværdig tredjepart (nemlogin).

Kan veksle fra JWT til OIOSAML, hvor JWT er udstedet og signeret af en OpenID connect server.

Ombytter STS-signeret id-kort eller JSON Web Token til OIOSaml-token rettet mod et specifikt audience, f.eks. sundhed.dk eller forløbsplaner.dk.

Snitfladebeskrivelse og brug

Formålet med omvekslingen er:

At tillade web-løsninger, hvis anvendere er logget på via NemLog-in anvendere af NemLogin at kalde foretage DGWS-kald, som kræver SOSI id-kort, ved at veksle en eksisterende OIOSAML-assertion udstedt af NemLog-intil et id-kort, som efterfølgende kan anvendes til opslag af webservices hos f.eks. NSP eller FMK.

At tillade anvendere af id-kort at foretage kald i NemLogin federationen, som kræver OIOSAML assertions, ved at veksle et eksisterende id-kort til et OIOSAML-assertion.

At tilbyde borgeren login-funktionalitet via en OpenID connect server, hvor et såkaldt JSON Web Token (JWT) udstedt til borgeren og signeret af OpenID serveren herefter kan veksles til

Snitflade OIOSaml2Sosi beskrives detaljeret her:
STS - Guide til anvendere - Medarbejder-Billetomveksling til signeret id-kort

Snitflade Sosi2OIOSaml og  JWT2OIOSaml beskrives detaljeret her:

STS - Guide til anvendere - Medarbejder-Billetomveksling til OIOSAML

Borger-Billetomveksling

Adgang

TilgængeligKomponentversioner sts
Endpoint(s)

/sts/services/Bst2Idws

/sts/services/JWT2Idws

Beskrivelse af services

Ombytter OIOSaml bootstrap token eller JWT til signeret identitytoken rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (nem-login)

Snitfladebeskrivelse og brug

Formålet med omvekslingen er:

At tillade web-løsninger, hvis anvendere er logget på via NemLog-in, at kalde foretage IDWS-kald, som kræver IDWS identitytoken, ved at veksle en eksisterende OIOSAML- eller JWT-asserteion udstedt af NemLog-in til et identitytoken, som efterfølgende kan anvendes til opslag af webservices hos f.eks. FSK eller FMK.

At tillade anvendere af identitytoken at foretage kald i NemLogin federationen, som kræver OIOSAML assertions, ved at veksle et eksisterende identitytoken til et OIOSAML-assertion.

At tilbyde borgeren login-funktionalitet via en OpenID connect server, hvor et såkaldt JSON Web Token (JWT) udstedt til borgeren og signeret af OpenID serveren herefter kan veksles til

Snitflade OIOSaml2Sosi beskrives detaljeret her:
STS - Guide til anvendere - Borger-Billetomveksling til IDWS

Fejlbeskeder

Behandling af forespørgsel

Ved behandling af en forespørgsel om udstedelse af ID-kort hos en STS gennemgås en række skridt. Forløbet er skitseretforsimplet nedenfor, med de skridt der har primær relevans i forhold til diagnosticering af udstedelse. Hvert skridt kan føre til en afvisning af forespørgslen, mens succesfuld verifikation leder til signering og dermed udstedelse af et ID-kort.

Verificeret forespørgsel

Ved succesfuld udstedelse af et STS signeret ID-kort returneres et SOAP svar fra STS indeholdende relevante ID-kort attributter(SAML assertions), dvs. både verificerede (f.eks CVR) og berigede (f.eks. CPR), samt øvrig information jævnfør DGWS.


<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope ...="...">
  <soapenv:Header>
    <wsse:Security id="AAABL0ncNMXd26QUzOR4JlNPU0k=">
      <wsu:Timestamp>
        <wsu:Created>2011-04-12T15:17:41</wsu:Created>
      </wsu:Timestamp>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body>
    <wst:RequestSecurityTokenResponse Context="www.sosi.dk">
      <wst:TokenType>urn:oasis:names:tc:SAML:2.0:assertion:</wst:TokenType>
      <wst:RequestedSecurityToken>...</wst:RequestedSecurityToken>
      <wst:Status>
        <wst:Code>http://schemas.xmlsoap.org/ws/2005/02/trust/status/valid</wst:Code>
      </wst:Status>
      <wst:Issuer>
        <wsa:Address>TESTSTS</wsa:Address>
      </wst:Issuer>
    </wst:RequestSecurityTokenResponse>
  </soapenv:Body>
</soapenv:Envelope>

Ovenstående eksempel viser en del af et svar indeholdende et STS signeret ID-kort. I eksemplet er namespace erklæringer samtalle ID-kort attributter fjernet af hensyn til overskuelighed. Vigtige elementer ved diagnosticering er:


Afvist forespørgsel

På tilsvarende vis leverer en STS ved afvist forespørgsel et SOAP svar (Fault) indeholdende yderligere information om fejlen.  Nedenstående eksempel viser (igen uden namespace erklæringer) elementerne i svaret der bruges i forbindelse med diagnosticer-ing:

Det er kombinationen affaultcode, faultactor og faultstring som identificerer fejlen, hvor faultstring typisk indeholder den nødvendige information for nærmere fejlsøgning.

Faultcode værdier faultcode skal ikke betragtes som entydige fejlkoder, men skal ses i sammenhæng og bør betragtes som en gruppering af de fejltyper der kan opstå ved behandling af kald til tjenester på en STS:

FAULTACTOR VÆRDIER



<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope ...="...">
  <soapenv:Header>
    <wsse:Security id="">
      <wsu:Timestamp>
        <wsu:Created>2011-04-12T15:17:39</wsu:Created>
      </wsu:Timestamp>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>wst:InvalidRequest</faultcode>
      <faultstring>The request was invalid or malformed</faultstring>
      <faultactor>dk:sosi:sts</faultactor>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

Detaljer i fejltekster

Ved nogle fejl kan faultstring indeholde dynamiske informationer som f.eks. autorisationskoder mv. Disse informationer kan anvendes af det kaldende system hvis systemet ikke selv har mulighed for at slå informationerne op i f.eks. Stamdatakomponenten. Det skal bemærkes at en fremtidig opdatering af DGWS eller en overgang til en anden standard kan betyde at disse informationer ikke længere er inkluderet i faultstring.

Test

Testdata

I modulet common ligger et antal Java Keystore filer der hver indeholder et enkelt certifikat. På testmiljøerne er nogle af disse certifikater knyttet til et antal autorisationer, således at eksemplerne kan vise forskellige anvendelser af STS'en.Medarbejdercertifikater

Funktionscertifikater

Statens_Serum_Institut_FOCES.jksCVR:46837428-FID:92421325

Virksomhedscertifikater

Statens_Serum_Institut_VOCES.jksCVR:46837428-UID:27910135

Medarbejdercertifikater

KeystorefilCVR-RIDCPRAutorisationsnummerUddannelseskode
Brian_Larsen_Laege.jksCVR:46837428-RID:114754151205691235NS3657170
Brian_Moeller_Laege.jksCVR:46837428-RID:567716681103811325

Karl_Hoffmann_Svendsen_Laege.jksCVR:46837428-RID:342085990102732379NS3627170
Sonja_Bach_Laege.jksCVR:46837428-RID:837010090309691444NS3637170
Sonja_Bach_Laege.jksCVR:46837428-RID:837010090309691444NS3645166

Øvrige certifikater

KeystorefilBeskrivelse
audience-certificate.jksIndeholder privat nøgle svarende til det audience der er konfigureret med navnet //sundhed.dk - og kan derfor anvendes til dekryptering
test-trusted-IdP.jksIndeholder privat nøgle for et certifikat som STS'en stoler på. Dermed er STS i stand til at veksle tokens signeret med denne private nøgle.