STS Anvenderdokument. STS Anvenderdokument

Relaterede dokumenter
STS Anvenderdokument i. STS Anvenderdokument

STS Designdokument. STS Designdokument

STS Anvenderdokument. STS Anvenderdokument

STS Fejlsituationer. STS Fejlsituationer

STS Anvenderdokument i. STS Anvenderdokument

SOSI STS Testscenarier

STS Driftsvejledning. STS Driftsvejledning

Ibrugtagning af Fødselsindberetningsservicen på NSP

Forretningsmæssige testscases for Seal.net i relation til anvendelse af NSP services

Overordnet løsningsbeskrivelse - Private aktører og borger log-in via SEB / NemLog-in

AuthorizationCodeService

Tilstrækkelig sikker dataudveksling via Sundhedsdatanettet (SDN) Ved Kåre Kjelstrøm

Guide til NemLog-in Security Token Service

Teknisk Dokumentation

ecpr erstatnings CPR Design og arkitektur

Valg af webservice standard

SOSI STS Designdokument

Den Gode Webservice 1.1

SOSI STS Dokumentationsoverblik

STS Installationsvejledning. STS Installationsvejledning

Specifikationsdokument for OCSP

Specifikationsdokument for OCSP

NemID DataHub adgang. & Doc , sag 10/3365

SOSIGW. - Administrationskonsol for SOSIGW Indeks

Certifikatpolitik for NemLog-in

Undgå driftsafbrydelser på grund af udløbet virksomheds- eller funktionssignatur

Ivan Overgaard 11/29/2012

Specifikationsdokument for OCSP

Specifikationsdokument for servicen PID-CPR

STS Installationsvejledning. STS Installationsvejledning

Guide til kravspecifikation

Guide til integration med NemLog-in / Brugeradministration

Udvidet brug af personligt NemID i erhvervssammenhæng

Digital post Snitflader Bilag A2 - REST Register Version 6.3

Introduktion til ændringerne ifm. overgangen til MitID og NemLog-in3

Security Token Service. Snitflade OIO WS Trust

Anbefalede testprocedurer

Specifikationsdokument for servicen PID-CPR

DKAL Snitflader Afsendelse og modtagelse af meddelelser via S/MIME

Copyright 2018 Netcompany. Alle rettigheder forbeholdes.

ELEKTRONISK INDBERETNING BØRNEDATABASEN VIA DGWS 13/ VERSION 1.02

NemHandel registreringsvejledning. Navision Stat, INDFAK og Nemkonto. Introduktion. Overblik. Side 1 af 15. ØS/ØSY/CPS 7.

DIADEM KOM GODT I GANG INTEGRATIONSVEJLEDNING IFT. SIKKERHED OG VERSIONERING AF WEBSERVICES VERSION: STATUS: FRIGIVET DATO: 22.

Sikker udstilling af data

Digitaliseringsstyrelsen

SOSI Gateway Komponenten (SOSI GW)

Fælles testmiljøer. Dato: Version: Vejledning til oprettelse og vedligehold af testcertifikater

Version 1.0. Vilkår for brug af Støttesystemet Adgangsstyring

Digital post Snitflader Bilag B - Afsendelse og modtagelse af meddelelser via S/MIME Version 6.3

FMK-online's brug af SmartFraming

Guide til integration med NemLog-in / Signering

Sikkerhed i Stamdatamodulet KOMBIT

Webservice kald. System-til-system integration. Ny Easy. ATP 1. februar 2017

Nets Rettighedsstyring

Revisionsvejledning til National Standard for Identiteters Sikringsniveauer (NSIS)

Timeout-politik for den fællesoffentlige føderation

DESIGNDOKUMENT (Teknisk dokumentation)

FairSSL Fair priser fair support

Vejledning til valg af NSIS Sikringsniveau for tjenesteudbydere

Specifikationsdokument for servicen RID-CPR

Standardvilkår for modtagelse af OCES-certifikater fra Nets DanID. (NemID tjenesteudbyderaftale [NAVN på NemID tjenesteudbyder indsættes])

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler

Single sign-on til statens systemer. April 2019 version 5

D INTEGRATIONSDESIGN FOR DATAAFTAGERE

DKAL Snitflader REST Register

Trin-for-trin guide: Tilslutning af web service til NemLog-in

Den Gode LÆ-blanket Webservice (DGLÆ:WS)

BBR OIOXML. Vejledning til OIOXML-snitflade. InputBox.wsdl

Digitaliseringsstyrelsen

DataHub Forbrugeradgangsløsning Spørgsmål og svar

MØDE OM INTEGRATION GENNEM ØKONOMI I RAMMEARKITEKTUREN 27/8-2015

SOSIGW. - Driftsvejledning for SOSIGW 1.2. Indeks

e-tl System til System kommunikationstest

Kald af PingService via SOAPUI

Guide til integration med NemLog-in / Web SSO

Snitfladebeskrivelse for Snitfladebeskrivelse STD-8 KMD Boligstøtte Version 1.0.0,

Vejledning til valg af NSIS Sikringsniveau for tjenesteudbydere

Transkript:

STS Anvenderdokument i STS Anvenderdokument

STS Anvenderdokument ii REVISION HISTORY NUMBER DATE DESCRIPTION NAME 0.3 2012-12 N

STS Anvenderdokument iii Indhold 1 Introduktion 1 1.1 Målgruppen...................................................... 1 2 STS 1 2.1 Snitflade........................................................ 1 2.2 Behandlingen af en forespørgsel om signering af ID-kort.............................. 1 2.2.1 Check ID-kort................................................ 2 2.2.2 Check certifikat................................................ 2 2.2.3 Check adgangsliste (ACL).......................................... 2 2.2.4 Check systemoplysninger.......................................... 2 2.2.5 Check brugeroplysninger........................................... 2 2.2.6 Signér ID-kort................................................ 3 3 ITS 3 3.1 Snitflade........................................................ 3 3.2 Behandling af forespørgsel om veksling af ID-kort til OIOIDWS-H token..................... 3 3.2.1 Check om ID-kort er af bruger-type..................................... 3 3.2.2 Check om ID-kort er gyldig i tid....................................... 4 3.2.3 Check om ID-kort er gyldig ifht. audience.................................. 4 3.2.4 Fremstil token................................................ 4 4 Billetomveksling: OIOSAML assertion til ID-kort 4 4.1 Snitflade........................................................ 4 4.2 Behandling af forespørgsel.............................................. 4 5 Billetomveksling: ID-kort til OIOSAML assertion 4 5.1 Snitflade........................................................ 5 5.2 Normalisering af audience.............................................. 5 5.3 Behandling af forespørgsel.............................................. 5 5.4 Konfiguration..................................................... 6 6 Referencer 6 A STS 1.1 til 1.3 migrering 6 B STS 1.3 til 2.0 migrering 7 C STS 2.0 til 2.1 migrering 7

STS Anvenderdokument 1 / 7 1 Introduktion Nærværende dokument henvender sig til nuværende og kommende anvendere af STS (Security Token Service), ITS (Identity Token Service) samt OIOSAML Billetomveksling og formålet med dokumentet er, at give hjælp til disse i arbejdet med integration mod STS og ITS. 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. 1.1 Målgruppen En typisk anvender af STS eller ITS, 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 [A3] har en god og uddybende beskrivelse af, hvordan et ID-kort er konstrueret og kan anvendes i praksis. 2 STS Formålet med STS er at sikre identiteten af og autorisere brugere der ønsker at tilgå services indenfor en føderation [A1] 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. 2.1 Snitflade Anvenderes tilgang til STS vil ofte være med hjælp fra Seal.Java [A2] eller Seal.NET [A3], som er biblioteker der bl.a. hjælper til med at understøtte brugen af DGWS [A4] og håndtere sikkerhedsaspekterne. Der eksisterer fyldig dokumentation for begge offentliggjorte biblioteker med beskrivelser af anvendelsen af disse. En tredje mulighed er en properitær løsning mod STS, hvor kaldet skal overholde DGWS. Indirekte tilgang er også mulig gennem SOSI-GW [A5], men det dokumenteres ikke her. Et eksempel på hvordan et kald konstrueres med Seal.Java findes i SOSI Programmers Guide ([A2]) under "Use case 1: How to authenticate an ID-card". Afhængig af miljø udstilles tjenesten på: http://<sts-host>:<port>/sts/services/securitytokenservice 2.2 Behandlingen af en forespørgsel om signering af ID-kort Her fokuseres på den forretningmæssige del, så dokumentation af den trivielle husholdning (serialisering m.m.) bag en forespørgsel er udeladt. Sekvensen er følgende: 1. Check ID-kort 2. Check certifikat 3. Check ACL 4. Check systemoplysninger 5. Check brugeroplysninger 6. Signér ID-kort Enhver af disse skridt i sekvensen kan resultere i en fejlsituation, hvorved videre normal processering af forespørgelsen ophører og der svares tilbage til kalder med en fejlbesked. For en mere detaljeret gennemgang af STS fejlsituationer henvises til [A10].

STS Anvenderdokument 2 / 7 2.2.1 Check ID-kort Forretningslogikken er består af tre skridt, som på baggrund af ID-kortet checker om: 1. ID-kortet er en understøttet version (vha. Seal-biblioteket) 2. ID-kortet er autentifikationsniveau niveau 3 (VOCES/FOCES) eller 4 (MOCES) 3. ID-kortet har korrekt udstedelsestidspunkt og varighed 2.2.2 Check certifikat Anvendelsen af et OCES-certifikat er beskrevet i DGWS [A3]. Denne del af sekvensen handler om, at afgøre om OCEScertifikatet [A6] kan accepteres og om certifikatet er gyldigt i føderationen. I praksis undersøges et X.509 v3 certifikat i følgende trin: 1. Afgør om certifikatet er af typen VOCES/FOCES eller MOCES 2. Afgør om certifikatet er gyldigt på kaldstidspunktet 3. Afgør om certifikatet er af samme type som angivet på ID-kortet 4. Afgør om certifikatet er tilbagetrukket 5. Afgør om certifikatet er gyldigt i føderationen, dvs. udstedt af samme CA 2.2.3 Check adgangsliste (ACL) I praksis anvendes ACL check ikke længere på STS miljøerne, men implementations understøtter to check: whitelist: Har kalder (CVR og systemnavn) adgang til at udstede ID-kort? blacklist: Er kalder (subject serial number) blokeret for at udstede ID-kort? 2.2.4 Check systemoplysninger Dette skridt skal afgøre om CVR nummeret er det samme på ID-kort og OCES-certifikat. 2.2.5 Check brugeroplysninger Udføres kun for MOCES-certifikater. Her afgøres om CVR nummeret, som angivet i MOCES-certifikatet, har en relation til brugerens CPR nummer, som angivet på ID-kortet. I forbindelse med det spørges et, for STS, eksternt system om denne relation eksisterer. I det tilfælde, hvor brugerens CPR nummer på ID-kortet mangler foretages et opslag i det eksterne system udelukkende på baggrund af MOCES-certifikatets oplysninger for at afgøre om en relation eksisterer. Verifikation af CPR Til check af CPR-nummer anvendes DanID s RID-CPR tjeneste, som med subject serial number fra et MOCES certifikat kan slå det tilhørende CPR op. I STS er der to scenarier: a. ID-kort indeholder ikke CPR, hvilket betyder at STS slår CPR op og beriger ID-kortet med det fundne. b. ID-kort indeholder CPR, hvorfor STS slår CPR op og bekræfter at de to matcher. Et MOCES signeret ID-kort indeholder således altid et verificeret CPR-nummer. Verifikation af autorisation Check af autorisation benytter sig af autorisationsregisteret, og baserer sig på de autorisationsoplysninger der er udfyldt i ID-kortet. Mere specifikt anvendes autorisations- og uddannelseskode til at finde matchende en autorisation:

STS Anvenderdokument 3 / 7 a. Hvis ikke der findes en autorisation afvises ID-kort udstedelsen b. Hvis der findes én matchende autorisation beriges ID-kortet med oplysningerne c. Hvis mere end én autorisation findes afvises udstedelsen da en entydig autorisation ikke kan afgøres. d. Af hensyn til legacy systemer udstedes kort, hvor både autorisations- og uddannelseskode er ugyldige, selvom der ikke findes en autorisation. bemærk Gælder kun for STS miljøer hvor adgang til autorisationsregiser er konfigureret. Indtil alle STS miljøer har adgang til autorisationsregister kan service udbydere således ikke forlade sig på at autorisationen i et ID-kort er verificeret af en STS. 2.2.6 Signér ID-kort I det tilfælde, at sekvensen i alle foregående skridt har været fejlfri oprettes nu et svar, som indeholder en kopi af kalderens ID-kort, der signeres med et STS VOCES-certifikat. Dette vil effektivt give gyldighed til ID-kortet i føderationen. 3 ITS Formålet med ITS er at veksle et STS signeret ID-kort til et OIOIDWS-H Identity Token [A7]. Dette token kan efterfølgende anvendes til at opnå adgang til andre systemer i føderationen, hvor et token fungerer som adgangsgiver. Det genererede token bliver typisk anvendt indlejret i en HTTP-URL. Se endvidere [A8]. I dette afsnit beskrives de væsentlige faser der eksisterer ifbm. en forespørgsel til ITS. 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. 3.1 Snitflade Anvenderes tilgang til ITS vil enten være med hjælp fra Seal.Java/Seal.NET eller en properitær løsning forudsat, at kaldet overholder DGWS. En forespørgsel består basalt set af et SOSI ID-kort og et ønsket audience, som bestemmer hvordan det vekslede Identity Token behandles. Et eksempel på hvordan et kald konstrueres med Seal.Java findes i SOSI Programmers Guide ([A2]) under "Use case 5: Request an Identity token from a STS". For Seal.NET anvendere findes der et.net-eksempel på kald af ITS ([A9]). Afhængig af miljø udstilles tjenesten på: http://<sts-host>:<port>/sts/services/identitytokenservice 3.2 Behandling af forespørgsel om veksling af ID-kort til OIOIDWS-H token Her fokuseres igen på den forretningsmæssige side af sagen og den trivielle husholdning er udeladt fra dette dokument. Sekvensen er følgende: 1. Check om ID-kort er af bruger-type 2. Check om ID-kort er gyldig i tid 3. Check om ID-kort er gyldig ifht. audience konfiguration 4. Fremstil token 3.2.1 Check om ID-kort er af bruger-type Dette skridt har det simple formål at afgøre om ID-kortet er af bruger-typen. Denne information fås fra ID-kortet, som er indlejret i forespørgselsen.

STS Anvenderdokument 4 / 7 3.2.2 Check om ID-kort er gyldig i tid Dette skridt har det simple formål at afgøre om ID-kortet er gyldigt i tid udfra ID-kortets angivne oprettelsesdato og udløbsdato. 3.2.3 Check om ID-kort er gyldig ifht. audience Audience [A6] begrebet dækker over den service, hvortil det aktuelle token skal udstedes. Audience er en logisk adresse på denne service. Det er defineret en række, parametre for et audience som afgør, hvilke egenskaber det aktuelle audience har. Disse parametre er lokale for ITS og vedligeholdes af driftsoperatøren direkte på databasen. Såfremt der findes en audience konfiguration for det aktuelle audience skal dette skridt afgøre om ID-kortet er gyldigt i tid ifht. audience konfigurerede maksimale levetid på et ID-kort. 3.2.4 Fremstil token I det tilfælde at sekvensen i alle foregående skridt har været fejlfri oprettes nu et token vha. Seal.Java, som indlejres i svaret. 4 Billetomveksling: OIOSAML assertion til ID-kort Formålet med omvekslingen er at tillade anvendere af NemLogin at kalde foretage DGWS kald, som kræver SOSI ID-kort, ved at veksle en eksisterende OIOSAML assertion til et ID-kort. 4.1 Snitflade Anvendere vil typisk bruge Seal.Java eller Seal.Net. En forespørgsel består af en OIOSAML assertion og yderligere attributter, der bruges af STS til at skabe ID-kortet. Et eksempel på hvordan et kald til billetomvekslingen konstrueres med Seal.Java findes i SOSI Programmers Guide ([A2]) under "Use case 9: Exchange an OIOSAML assertion to an IDCard at a STS". Afhængig af miljø udstilles tjenesten på: http://<sts-host>:<port>/sts/services/oiosaml2sosi 4.2 Behandling af forespørgsel Omvekslingen validerer det medsendte OIOSAML assertion og tilhørende attributter om i følgende skridt: 1. Validér forespørgslens signatur 2. Validér OISAML assertion (signatur, tid og assurance level) 3. Anvender STS forretningslogik til a. validering af CPR nummer b. validering af autorisation 4. Checker at system navn findes 5. Byg og signér SOSI ID-kort 5 Billetomveksling: ID-kort til OIOSAML assertion Formålet med omvekslingen er 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.

STS Anvenderdokument 5 / 7 5.1 Snitflade Anvendere vil typisk bruge Seal.Java eller Seal.Net. En forespørgsel består af et ID-kort og yderligere attributter, der bruges af STS til at skabe et assertion. Et eksempel på hvordan et kald til billetomvekslingen konstrueres med Seal.java findes i SOSI Programmers Guide ([A2]) under "Use case 11: Exchange an IDCard to and encrypted OIOSAML assertion at a STS". Afhængig af miljø udstilles tjenesten på: http://<sts-host>:<port>/sts/services/sosi2oiosaml Det skal bemærkes at ikke alle STS signerede ID-kort kan anvendes til omveksling. Signeringen skal foregå via følgende snitflade: http://<sts-host>:<port>/sts/services/newsecuritytokenservice På sigt vil alt funktionalitet i denne flyttes over på den gamle URL. Dette vil kun have betydning for anvendere af den gamle URL, så det anbefaldes at den nye snitflade benyttes i alle sammenhænge. Forskellen mellem de 2 snitflader er at NameID/AlternativeIdentifier vil blive overskrevet i den nye snitflade. Dermed kan anvendere ikke længere bestemme indhold heraf. 5.2 Normalisering af audience Audience (repliesto i forespørgelser) anvendes til at identificere konfigurationen, der bruges under omveksling; krypteringsnøgle og andre parametre vælges herunder. Audience skal tolkes som URI med en normalisering, som beskrives herefter. Denne normalisering bruges ved sammenligninger, dvs. ved opslag af konfiguration. Det er derfor vigtigt at der i forespørgelser anvendes audiences, der kan normaliseres til den rette konfiguration. En general URI ser således ud: <scheme>://<authority><path>?<query>#<fragment> Normaliseringen vil udføre følgende: lower-case af scheme og authority. hvis path blot er /, så vil path delen blive fjernet. query og fragment vil forblive uberørt. Port-angivelse, hvis sådan et findes, ændres heller ikke. Hvis scheme undlades, så vil : (kolon) også blive undladt. 5.3 Behandling af forespørgsel Omvekslingen validerer det medsendte ID-kort og de tilhørende attributter og udfører følgende skridt: 1. Validér forespørgslens signatur samt trust til det benyttede certifikat. Dette kan være slået fra pga. interoperabilitet med SOSI-GW. 2. Validér ID-kort (trust og udløb) 3. Udvælgelses af audience baseret på normalisering (se Afsnit 5.2) 4. Byg af OIOSAML assertion a. Inkludér bootstrap token (ID-kort), hvis dette er konfigureret for fundne audience. b. Signér assertion. c. Kryptér hele svaret med den for audience konfigurerede offentlige nøgle.

STS Anvenderdokument 6 / 7 5.4 Konfiguration Anvendere af systemet skal være opmærksom på at omvekslede tokens er rettet mod et modtager system, og vil kun kunne bruges hertil. Der afkræves derfor af modtager systemet visse oplysninger til konfiguration; disse er: audience identifikation af modtagersystemet som en URI, der skal være på normalform jvf. tidligere afsnit. publickey den offentlige nøgle som anvendes til kryptering af den omvekslede token. recipienturl den URL hvor modtagersystemet kan nåes på. includebst om ID-kort/bootstrap token skal inkluderes i den svarede assertion. deliverynotonorafteroffset det offset i tid fra omvekslingstidspunktet, der angiver hvornår det udstede må anvendes af modtagersystemet. notbeforeoffset offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstede assertion. notonorafteroffset offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstede assertion. 6 Referencer [A1] SOSI Executive Summary - (forklaring af føderationsbegrebet), Lakeside http://www.sosi.dk/twiki/bin/view/projectmanagement/sositechexecutiveoverview [A2] The SOSI Library Programmers Guide (version 2.1.6), Lakeside https://svn.softwareborsen.dk/sosi/tags/release-2.1.6/modules/seal/src/site/- SOSI%20programmers%20guide.doc [A3] Seal.NET (version 1.0), SDSD http://digitaliser.dk/resource/444315/artefact/dgws+seal.net.docx [A4] Den Gode Web Service (version 1.0 og 1.0.1), MedCom http://digitaliser.dk/resource/248311/artefact/dengodewebservice_1.0.pdf [A5] SOSI-GW Subversion repository https://svn.softwareborsen.dk/sosi-gw/ [A6] OCES-certifikatpolitikker (MOCES v4, VOCES v3) https://www.nemid.nu/digital_signatur/oces-standarden/oces-certifikatpolitikker/ [A7] FMKi projektet, Veksling til OIOIDWS-H Identity Tokens, NSI [A8] [A9] [A10] FMKi projektet, Brugsscenarier for OIODWS-H Identity Tokens, NSI Seal.NET ITS eksempel https://svn.softwareborsen.dk/medcomdgws/trunk/modules/sbo/src/securebrowserlogin.cs STS Fejlsituationer, Arosii A/S A STS 1.1 til 1.3 migrering I forbindelse med opgradering af systemer, der tidligere har været integreret til og fungeret med STS version 1.1, til at benytte STS version 1.3 er en række forhold, som opmærksomheden bør rettes mod: Autorisations-ID: der er indført et check på brugerens autorisations-id og det afgøres om brugerens rolle og autorisationskode, som angivet på ID-kortet, stemmer overens med lige præcis en tilladelse i lokale autorisationsoplysninger, førend brugeren kan godkendes. Fejlkoder og fejlbeskeder ændres i 1.3. Se [A10] for yderligere oplysninger. Support for whitelisting i STS udgår

STS Anvenderdokument 7 / 7 Introduktion af ITS: den nye service er beskrevet i afsnit 4 Seal.Java opgradering til version 2.1.x B STS 1.3 til 2.0 migrering For eksisterende anvendelser af STS 1.3, bør STS 2.0 ikke kræve ændringer. Introduktion af billetomveksling: den nye service er beskrevet i Afsnit 4 Seal.Java opgradering til version 2.1.5 C STS 2.0 til 2.1 migrering For eksisterende anvendelser af STS 2.0, bør STS 2.1 ikke kræve ændringer. Introduktion af ny billetomveksling: den nye service er beskrevet i Afsnit 5 samt introduktion af ny signeringssnitflade, der overskriver NameId feltet. Seal.Java opgradering til version 2.1.6