Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Indhold

Table of Contents

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.
STS
ITS?
Sundhedsdatanettet



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.

Links til mere information

<Relevante links til andre dokumenter, herunder i forhold til de data services skal arbejde på, og den model de følger>

<Eventuel link til mere uddybende beskrivelse, intern på NSP og eksternt>

Grafisk fremstilling og sammenhængen

Arkitekturoverblik

Gliffy Diagram
size600
namests_arkitektur
pagePin1

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.

...

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

Sikkerhed

<Forudsætninger for anvendelse og krævede adgange, whitelistinger etc., Sikkerhedsniveau. Angiv krav til authentication for at kunne bruge servicen/komponenten.>

Service udstil type<Angiv typen, f.eks. DGWS, IDWS, ...>
Krævede adgange <Angiv adgange som er nødvendige for anvendere for at kunne benytte servicen/komponenten>
Whitelisting <Angiv eventuel nødvendig whitelisting>
Krævet sikkerhedsniveau <Angiv krav til authentication for at kunne bruge servicen/komponenten>
Forudsætninger for anvendelse <Angiv forudsæntninger som er nødvendige for at kunne bruge servicen/komponenten, eventuelle nødvendige kald til andre services, etc.>
Logning<Angiv om og hvad der logges>
<evt. yderligere krav eller forhold>

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:

...

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.

Id-kort

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.

Gliffy Diagram
size600
nameId card in header and body
pageid92754297


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.

...

  • Bruger: CPR-nummeret, fulde navn og email-adresse på den person som id-kortet repræsenterer.
  • Rolle: Den firecifrede uddannelseskode som brugerens autorisation har. Koderne i autorisationsregistret er et subset af uddannelseskoderne fra Danmarks Statistik. Som eksempel kan nævnes at uddannelseskoden 7170 bruges for læger og 5166 bruges for sygeplejersker.
  • Autorisationsid: Det autorisationsID som brugerens autorisation har. En anvender har en eller flere autorisationer, hvert med et unikt ID og en uddannelseskode.
  • Ansættelse: Den ansættelse i organisationen som brugeren har. Denne værdi er en fritekst og bevares i det STS-signerede id-kort.

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].

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.

Definitioner og referencer

Dokument historik

DatoAnsvarligBeskrivelse
dd/mm-yyyy

Initiel version

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.

...

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

Billetomveksling til signeret id-kort

Adgang

TilgængeligKomponentversioner sts
Endpoint(s)

/sts/services/OIOSaml2Sosi

Beskrivelse af services

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

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.

Snitfladerne beskrives detaljeret her:
STS - Guide til anvendere - Billetomveksling til signeret id-kort

Fejlbeskeder

<Beskrivelse af  fejlbeskeder, og i hvilke situationer man kan forvente at se disse i.

Noter omkring ting som går på tværs af services. Det kan være fejl som optræder generelt og som man skal være opmærksom på.>

Eksempler på request/response

Eksempler på request og response til de operationer der udstilles. De enkelte elementer er beskrevet under snitfladebeskrivelse. Klient proxier kan genereres udfra WSDL'en.

<eksempel 1 på ..>

Code Block
languagexml
titleEksempel request/response
collapsetrue
<eksempel her>

<mere eksempel>

Test

<beskriv Test muligheder, test-systemer og eventuelle testdata>

Eksempel kode og klient

Eksempel kode

<Eksempel kode. Det er meget lettere at lave sin egen implementering, hvis man kan kigge efter en anden ....>

Code Block
languagexml
titleEksempel kode
collapsetrue
<eksempel her, eller reference andet steds>

Eksempel klient

<og hvor det giver mening angiv eventuel eksempel klient, samt hvordan og hvor det eventuelt kan eksekveres>

...