Versions Compared

Key

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

...

Formålet med dette dokument er at beskrive SOSI STS - implementationen. Det forudsættes Det forudsættes at læseren har forudgående kendskabtil STS’ens kendskab til STS'ens rolle - specifikt i
relation til ”Den Gode Web Service” [R3] og  og de standarder den baserer sig på.


Detaljeringsgraden henvender sig til læseren , der har behov for en overordnet introduktion overordnet introduktion til implementationen, herunder systemkontekst (afsnit 2), opdeling
i komponenter (afsnit 3) og datamodellen (afsnit 4). Desuden berøres deployment afhængigheder deployment afhængigheder (afsnit 5).

Table of Contents
outlinetrue

Arkitekturoverblik

Image RemovedImage Added

Figur 1: STS-afhængigheder og eksterne snitflader

...

Oversigt over snitflader og adgang

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.

Følgende er en oversigt over STS snitflader og kravene til adgang til disse.


Begreber

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


Disse begreber benyttes i snitfladerne nedenfor.


SnitfladeSnitfladeAnvendersystemBrugerTokensTrustModtager

/sts/services/SecurityTokenService

/sts/services/NewSecurityTokenService

WS-Trust 1.2 (DGWS)Alle som har netværksmæssig adgangSystem eller medarbejder

Input: Selvsigneret id-kort

Output: STS signeret id-kort

Indgående id-kort skal være signeret af "brugeren selv".Alle DGWS-services
/sts/services/OIOSaml2SosiWS-Trust 1.4 (OIO-IDWS 1.0)

Alle som har netværksmæssig adgang.

Dele af SOAP besked skal være signeret med system-certifikat

Alle medarbejdere

Input: OIO-Saml assertion (NemLogin)

Output: STS signeret id-kort

OIOSaml assertion skal være signeret af trusted part (i test-new-nemLogin-idp.keystore).

I praksis NemLog-In

Alle DGWS-services
/sts/services/Sosi2OIOSamlWS-Trust 1.4 (OIO-IDWS 1.0)

Alle som har netværksmæssig adgang

Dele af SOAP besked kan være signeret med system-certifikat (verificeres ikke pga DCC/Gateway)

Alle medarbejdere

Input: STS signeret id-kort

Output: OIO-Saml assertion

Id-kort skal være signeret af STS (udstedt af /NewSecurityTokenService)

Modtager-system skal være konfigureret (i tabellen iboConfig).

/sts/services/Bst2IdwsWS-Trust 1.4 (OIO-IDWS 1.0)

Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration).

Dele af SOAP besked skal være signeret med denne nøgle.

Alleborgere

Input: OIO-Saml bootstrap token (Nemlogin)

Output: IDWS (1.0) token.

Bootstrap token skal være signeret af trusted part (i test-new-nemLogin-idp.keystore).

I praksis NemLog-In

Modtager-system skal være konfigureret (i tabellen audienceConfiguration).
/sts/services/JWTIdwsWS-Trust 1.4 (OIO-IDWS 1.0)

Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration).

Dele af SOAP besked skal være signeret med denne nøgle.

Alleborgere

Input: JWTsigneretafOpenId connector

Output: IDWS (1.0) token.

JWT skal være signeret af trusted part (i test-jwt-idp-trust.jks). kid skal pege på det rigtige alias i denne.

Issuer skal være konfigureret i services.xml

Modtager-system skal være konfigureret (i tabellen audienceConfiguration).

JWT suport skal være aktiveret (i tabellen audienceConfiguration)


Afhængigheder

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

...

Configuration: Assembly og konfiguration af STS

og omveksling af billetter:


...

AfhængighedBeskrivelseSecurityTokenServiceOIOSaml2SosiSosi2OIOSamlBs2Idws
CRASpærrelister tilgængelige på NSP platformenXXXX
KrydscertifikaterHentes via HTTP fra internettetXXXX
STS databaseKonfiguration og lokal cache af CPRXXXX
STS keystore
Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fraXXXX
AutorisationerIndlæses fra autorisationsregisterXX

Nationale roller (SEB)
XX

RID2CPRVerifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager(X)(X)

PID2CPRVerifikation af borgeres CPR nr. Hentes fra internet fra central traffic manager


X
FuldmagtsserviceVerifikation om fuldmagt til at agere på vegne af anden borger


(X)


Afhængigheder i parantes anvendes kun i visse scenarier.


Logisk arkitektur


STS består af en række del-komponenter (eller services), som konfigureres via Springvia Spring frameworket. For nærmere detaljer omkring konfigurationen henvises til installationsvejlednignen (se [R2])til installationsvejledningen. 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 eller borgercertifikat
  • Authorization: Verifikation af autorisation id ud fra CPR
  • Fuldmagt


En væsentlig komponent for STS er SOSI Seal - biblioteket, der indtager en central rolle 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 (ikke udtømmende liste)

Komponentinteraktion id-kort udstedelse

Komponenterne anvendes

...

f.eks.  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 RemovedImage Added

Figur 3: STS-udstedelse af MOCES signeret ID-kort

...

  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.

Diagrammerne nedenfor viser nærmere detaljer angpende henholdsvis validering af signatur, samt medarbejder validering


Image Added

Figur 4: Validering af XML signatur

Image Added

Figur 5: Validering af medarbejder information

Komponent interaktion omveksling fra OIOSaml assertion til id-kort

Image Added

Komponentsnitflader


Figur 46: Komponent-interfaces i STS

...

Code Block
OcesCvrRidService

Validering eller oslag opslag 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
Code Block
AclServiceProcurationService

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

...

Hentning af fuldmagter fra NemLog-In fuldmagtsservicen.Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):

  • getProcurationPrivileges: Henter listen af privilegier udstedt til den aktuelle bruger (borger) fra en anden borger.

Code Block
AuthorizationService

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

  • getAuthorizations: Finder autorisationer tilknyttet et CPR-nummer

...

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
    • SkemaTabelBeskrivelseBenyttes pt
      STS (backoffice)iboConfigindeholder audience specifik konfiguration for SOSI ID-kort til
      OIOSAML omveksling
      Ja
      STS (backoffice)audienceConfigurationindeholder konfiguration vedrørende billetomveksling fra bootstrap token til IDWS tokenJa
      STS (backoffice)roleDefinitionsIndeholder opsætning af gyldige nationale roller, og hvorledes disse repræsenteres i id-kort og i SEBJa
      STS (backoffice)trustedCvrIndeholder en liste af cvr numre, der kan angive nationale roller uden at få disse validereseJa
      STS (lokal)cprcache
    • indeholder relationer mellem certifikat og CPR-nummer. Anvendes hvis deploymiljøet er godkendt til opbevaring af relationen i klartekst (
  • se 1
    • Nødvendig hvis ikke CPR web servicen altid skal kaldes med manglende CPR i ID-kort).Ja
      STS (lokal)cprhashindeholder et hash af mapningen mellem certifikat og CPR-nummer
  • (se 2). Anvendes
    • . Oprindeligt tænkt anvendt hvis relationerne ikke ønskes opbevaret som klartekst.
    • Ikke længere muligt, idet der er behov for at kunne tilføje cpr nummer til et id-kort uden dette er angivet i input.Nej
      STS (lokal)whitelistindeholder information (CVR-nummer og system navn), der anvendes til at at give systemer adgang til udstedelse af ID-kort. Benyttes ikke længere.Nej
      STS (lokal)blacklistindeholder information (X509 certifikat subject serial number), der anvendes til at blokere for udstedelse af ID-kort for specifikke certifikater.Nej
      SDMautregIndeholder aktuelle autorisationskoder for autoriserede sundhedsfaglige medarbejdere. Vedligeholdes af Autorisations importerenJa
      SDMnationalRolesIndeholder roller importerede fra SEBJa
      CRAcrlIndeholder et antal spærrelister incl. metadata omkring seneste hentning af disseJa
      CRArevokedIndeholder replika af en given spærreliste indeholdende aktuelt revokerede certifikaterJa
  • 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 RemovedFigur 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
    • JEE 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