Page History
...
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 | ||
|---|---|---|
|
Arkitekturoverblik
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 | ||
|---|---|---|
| ||
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
| Begreb | Forklaring |
|---|---|
| Anvendersystem | Det IT-system som anvender en STS snitflade |
| Bruger | Den bruger som via et klient IT-system anvender STS |
| Trust | Hvem stoler vi på som signerende part på en indgående billet. |
| Modtager | Hvilke systemer kan anvende den billet der udstedes af STS. |
Disse begreber benyttes i snitfladerne nedenfor.
| Snitflade | Snitflade | Anvendersystem | Bruger | Tokens | Trust | Modtager |
|---|---|---|---|---|---|---|
/sts/services/SecurityTokenService /sts/services/NewSecurityTokenService | WS-Trust 1.2 (DGWS) | Alle som har netværksmæssig adgang | System 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/OIOSaml2Sosi | WS-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/Sosi2OIOSaml | WS-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/Bst2Idws | WS-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/JWTIdws | WS-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ængighed | Beskrivelse | SecurityTokenService | OIOSaml2Sosi | Sosi2OIOSaml | Bs2Idws |
|---|---|---|---|---|---|
| CRA | Spærrelister tilgængelige på NSP platformen | X | X | X | X |
| Krydscertifikater | Hentes via HTTP fra internettet | X | X | X | X |
| STS database | Konfiguration og lokal cache af CPR | X | X | X | X |
| STS keystore |
| Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fra | X | X | X | X | |
| Autorisationer | Indlæses fra autorisationsregister | X | X | ||
| Nationale roller (SEB) | X | X | |||
| RID2CPR | Verifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager | (X) | (X) | ||
| PID2CPR | Verifikation af borgeres CPR nr. Hentes fra internet fra central traffic manager | X | |||
| Fuldmagtsservice | Verifikation 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.
Figur 3: STS-udstedelse af MOCES signeret ID-kort
...
- Deserialisering web service request og verifikation af signatur
- Check af ID-kort, f.eks. version og autentifikationsniveau
- Spærrelistecheck af signerende og STS-certifikat
- ACL-verifikation blacklisting af certifikater)
- Check af certifikat til CPR-tilknytning
- Check af autorisation knyttet til CPR
- Signering af ID-kort med STS-certifikat
- 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
Figur 4: Validering af XML signatur
Figur 5: Validering af medarbejder information
Komponent interaktion omveksling fra OIOSaml assertion til id-kort
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
Skema Tabel Beskrivelse Benyttes pt STS (backoffice) iboConfig indeholder audience specifik konfiguration for SOSI ID-kort til
OIOSAML omvekslingJa STS (backoffice) audienceConfiguration indeholder konfiguration vedrørende billetomveksling fra bootstrap token til IDWS token Ja STS (backoffice) roleDefinitions Indeholder opsætning af gyldige nationale roller, og hvorledes disse repræsenteres i id-kort og i SEB Ja STS (backoffice) trustedCvr Indeholder en liste af cvr numre, der kan angive nationale roller uden at få disse validerese Ja STS (lokal) cprcache
indeholder relationer mellem certifikat og CPR-nummer. Anvendes hvis deploymiljøet er godkendt til opbevaring af relationen i klartekst (
se 1Nødvendig hvis ikke CPR web servicen altid skal kaldes med manglende CPR i ID-kort). Ja STS (lokal) cprhash indeholder 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) 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. Nej STS (lokal) blacklist indeholder information (X509 certifikat subject serial number), der anvendes til at blokere for udstedelse af ID-kort for specifikke certifikater. Nej SDM autreg Indeholder aktuelle autorisationskoder for autoriserede sundhedsfaglige medarbejdere. Vedligeholdes af Autorisations importeren Ja SDM nationalRoles Indeholder roller importerede fra SEB Ja CRA crl Indeholder et antal spærrelister incl. metadata omkring seneste hentning af disse Ja CRA revoked Indeholder replika af en given spærreliste indeholdende aktuelt revokerede certifikater Ja
- autreg indeholder autorisationer. Krævet hvis autorisationscheck er aktivt. iboConfig indeholder audience specifik konfiguration for SOSI ID-kort til OIOSAML-omveksling.
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
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.







