Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootSikkerhedsservices (STS)
firsttabsikkerhedsservices (STS)
includeroottrue


Excerpt
hiddentrue

Introduktion

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

Table of Contents
outlinetrue

Arkitekturoverblik

Image Added

Figur 1: STS-afhængigheder og eksterne snitflader

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.

Code Block
languagejava
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]).

Code Block
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]).

Code Block
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]).

Code Block
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

Code Block
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.

Afhængigheder

STS’en afhænger af en række eksterne komponenter i forbindelse med udstedelse af ID-kort:

  • CRL: Fulde spærrelister tilgængelige via HTTP fra certifikater.
  • CRL: Hentning af intermediate- (kryds) certifikater via HTTP.
  • RID-CPR: Web services for mapning af OCES2-certifikater til CPR-nummer
  • PID-CPR: Web service for validering af sammenhæng mellem PID og CPR-nummer
  • Database: Persistens af STS-data
  • 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

Logisk arkitektur

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:

  • Crl: Spærreliste kontrol af OCES-certifikater
  • Acl: Check for adgang til udstedelse ID-kort (benyttes ikke pt)
  • Cpr: CPR-opslag ud fra OCES-medarbejdercertifikat
  • Authorization: Verifikation af autorisation id ud fra CPR

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.

Image Added

Figur 2: Komponenter anvendt af STS

Komponentinteraktion

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.

Image Added

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:

  1. Deserialisering web service request og verifikation af signatur
  2. Check af ID-kort, f.eks. version og autentifikationsniveau
  3. Spærrelistecheck af signerende og STS-certifikat
  4. ACL-verifikation blacklisting af certifikater)
  5. Check af certifikat til CPR-tilknytning
  6. Check af autorisation knyttet til CPR
  7. Signering af ID-kort med STS-certifikat
  8. Serialisering af web service response

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.

Komponentsnitflader


Image Added

Figur 4: Komponent-interfaces i STS

Code Block
OcesCrlService

Check af OCES-spærrelistecheck:

  • isRevoked: Checker om et X509-certifikat er spærret
  • getCrlTimestamp: Returnerer tidsstemplet for den underliggende spærreliste

Sker op mod en lokal kopi af revokationslister, vedligeholdt af NSP-platformen.

Code Block
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:

  • isRelated: Afgør om SSN og CPR-nummer hører sammen
  • findRelatedCpr: Slår tilhørende CPR-nummer op ud fra SSN
Code Block
OcesPidService

Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):

  • isRelated: Afgør om SSN og CPR-nummer hører sammen
Code Block
AclService

Gennem denne komponent afgøres på baggrund af certifikat information og system navn om ID-kort kan udstedes. Udstiller
følgende operationer:

  • isWhitelisted: Afgør om certifikat information og system navn er white listed - bruges ikke mere
  • isBlackListed: Afgør om certifikat information og system navn er black listed

Whitelisting anvendes ikke længere, mens det stadig er muligt at blackliste enkelte certifikater.

Code Block
AuthorizationService

Verificerer og beriger ID-kort med autorisation ID udfra CPR-nummer:

  • • getAuthorizations: Finder autorisationer tilknyttet et CPR-nummer

Sker op mod en lokal kopi af autorisationsregisteret, vedligeholdt af NSP-platformen.

Datamodel

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:

  • whitelist indeholder information (CVR-nummer og system navn), der anvendes til at at give systemer adgang til udstedelse af ID-kort. Benyttes ikke længere.
  • blacklist indeholder information (X509 certifikat subject serial number), der anvendes til at blokere for udstedelse af ID-kort for specifikke certifikater.
  • cprcache indeholder relationer mellem certifikat og CPR-nummer. Anvendes hvis deploymiljøet er godkendt til opbevaring af relationen i klartekst (se 1).
  • cprhash indeholder et hash af mapningen mellem certifikat og CPR-nummer (se 2). Anvendes hvis relationerne ikke ønskes opbevaret som klartekst.
  • autreg indeholder autorisationer. Krævet hvis autorisationscheck er aktivt.
  • iboConfig indeholder audience specifik konfiguration for SOSI ID-kort til OIOSAML-omveksling.

    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.


    Image AddedFigur 5: STS-datamodel

    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 Deployment

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

    Referencer

    [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