Formålet med dette dokument er at beskrive SOSI STS-implementationen. Det forudsættes at læseren har forudgående kendskabtil STS’ens rolle - specifikt i relation til ”Den Gode Web Service” [R3] og de standarder den baserer sig på. Detaljeringsgraden henvender sig til læseren, der har behov for en overordnet introduktion til implementationen, herunder systemkontekst (afsnit 2), opdeling i komponenter (afsnit 3) og datamodellen (afsnit 4). Desuden berøres deployment afhængigheder (afsnit 5).
Figur 1: STS-afhængigheder og eksterne snitflader
STS’ens primære funktion er udstedelse af SOSI ID-kort, som beskrevet i ”Den GodeWeb Service” (se afsnittet ”STS-Kommunikation” i [R3]). Til serialisering/deserialisering og signering af web service kald anvendes STS SOSI Seal biblioteket, som skitseret i ”The SOSI Library Programmers Guide” (se ”Use case 3: How to issue an ID-card ” i [R1]). Desuden tilbyder STS’en web services
til veksling til og fra SOSI ID-kort.
Sekundært udstiller STS’en administrativ funktionalitet, det vil sige operationel status, ACL konfiguration, log adgang og cache kontrol, gennem et simpelt webbaseret interface.
SecurityTokenService |
Service til udstedelse af SOSI ID-kort. Anvendelsen af STS er beskrevet i ”Den GodeWeb Service” (se afsnittet ”STS-Kommunikation” i [R3]). SOSI Seal biblioteket benyttes af STS til serialisering/deserialisering af web service kaldet samt signering af udstedte ID-kort. For nærmere information om anvendelsen af denne service se "Use case 1: How to authenticate an ID-card"i ”The SOSI Library Programmers Guide” ([R1]).
OIOSaml2Sosi |
Service til veksling af OIOSAML-assertion (NemLogin token) til SOSI ID-kort. For nærmere information om anvendelsen af denne service se "Use case 9: Exchange an OIOSAML assertion to an IDCard at a STS"i ”The SOSI Library Programmers Guide” ([R1]).
Sosi2OIOSaml |
Service til veksling af SOSI ID-kort til OIOSAML assertion (NemLogin token). For nærmere information om anvendelsen af denne service se "Use case 11: Exchange an IDCard to an encrypted OIOSAML assertion at a STS"i ”The SOSI Library Programmers Guide” ([R1]).
Bst2Idws |
Service til veksling af et OIOSAML bootstraptoken (NemLogin token) udstedt på baggrund af et borgercertifikat til et identitytoken rettet mod anvendelse hos en given tredjepart (audience). Forespørgslen indeholder et "Claim"vedrørende borgerens cpr-nummer, som valideres med anvendelse af pid-cpr service hos Nets
Saml2Idws |
Service til veksling af et krypteret OIOSAML token (NemLogin token) udstedt på baggrund af et borgercertifikat til et identitytoken rettet mod anvendelse hos en given tredjepart (audience). Forespørgslen indeholder et "Claim"vedrørende borgerens cpr-nummer, som valideres op mod cpr nummer angivet i OIOSaml token.
STS’en afhænger af en række eksterne komponenter i forbindelse med udstedelse af ID-kort:
Configuration: Assembly og konfiguration af STS
STS Keystore: Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fra
STS består af en række komponenter (eller services), som konfigureres via Spring. For nærmere detaljer omkring konfigurationen henvises til installationsvejlednignen (se [R2]). Komponenterne indkapsler følgende funktionalitet:
En væsentlig komponent for STS er SOSI Seal-biblioteket, der indtager en central rolle i forbindelse med udstedelse af ID-kortet (se også Figur 3). Seal anvendes som et tredjeparts bibliotek af STS.
Figur 2: Komponenter anvendt af STS
Komponenterne anvendes af STS ved udstedelsen af ID-kort. Sekvensdiagrammet i Figur 3 viser et typisk forløb med anvendelse af komponenterne, som STS gennemløber i forbindelse med udstedelse af MOCES signeret ID-kort, hvor resultatet er en succesfuld udstedelse af et STS signeret ID-kort.
Figur 3: STS-udstedelse af MOCES signeret ID-kort
Andre scenarier gennemløber en delmængde af de komponentinteraktioner der er illustreret i figuren. Således består udstedelsen
af skridtene:
Skridt 5 og 6 foretages kun, såfremt ID-kortet er signeret med et MOCES-certifikat. Alle verifikationsskridtene kan afbryde forløbet, hvilket resulterer i, at et fejlsvar med passende information returneres til kalderen.
Figur 4: Komponent-interfaces i STS
OcesCrlService |
Check af OCES-spærrelistecheck:
Sker op mod en lokal kopi af revokationslister, vedligeholdt af NSP-platformen.
OcesCvrRidService |
Validering eller oslag af CPR-nummer ud fra et MOCES certifikats ”subject serial number” (SSN), hvor den relevante service
afgøres udfra certifikatets issuer, f.eks. OCES1 vs OCES2:
OcesPidService |
Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):
AclService |
Gennem denne komponent afgøres på baggrund af certifikat information og system navn om ID-kort kan udstedes. Udstiller
følgende operationer:
Whitelisting anvendes ikke længere, mens det stadig er muligt at blackliste enkelte certifikater.
AuthorizationService |
Verificerer og beriger ID-kort med autorisation ID udfra CPR-nummer:
Sker op mod en lokal kopi af autorisationsregisteret, vedligeholdt af NSP-platformen.
STS-anvendelse af database begrænser sig primært til læsning af konfigurationsdata og persistering af cachede værdier til (se Figur 5), og består af følgende tabeller:
1. Nødvendig hvis ikke CPR web servicen altid skal kaldes med manglende CPR i ID-kort
2 .SHA-256 af X509-certifikatets serial number og tilhørende CPR-nummer.
Databasemodellen er simpel og indeholder ingen bindinger til specifikke databaser. Tabellerne cprhash og cprcache fungerer som en simpel cache for CPR-opslag, og repopuleres automatisk, hvorfor rækkerne kan slettes efter behov.
STS-applikationen er en J2EE web applikation, som deployes til driftsmiljøerne som et WAR-arkiv. Applikationen deployeres sammen med konfigurationsartefakter, som bestemmer STS runtime egenskaber, herunder føderation (test eller produktion), eksterne services og konfiguration af logning. For nærmere detaljer omkring konfigurations- og deploymentmuligheder henvises til installationsvejledningen [R2].
[R0] Kravspecifikation Identitetsservice (version 1.3, 20. April 2006), Ribe Amt
[R1] The SOSI Library Programmers Guide, (version 2.1, 4. Februar 2013), Lakeside
[R2] STS Installationsvejledning (version 0.1?, ??. Februar 2013), Arosii
[R3] Den Gode Webservice (version 1.1, 1. Juli 2008), MedCom