Formålet med dette dokument er at beskrive SOSI STS implementationen. Det forudsættes at læseren har forudgående kendskab til STS'ens rolle - specifikt i
relation til ”Den Gode Web Service” 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
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/BST2SOSI | WS-Trust 1.4 (OIO-IDWS 1.0) | Alle som har netværksmæssig adgang | Alle medarbejdere | Input: OIO-Saml bootstrap token Output: STS signeret id-kort | Bootstrap token skal være signeret af trusted part. Lokal IdP, SEB eller NemLog-in | Alle DGWS-services |
/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 Output: IDWS (1.0) token. | Bootstrap token skal være signeret af trusted part. I praksis NemLog-In eller SEB | 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) |
/sts/services/JWT2OIOSaml | 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: OIO-Saml assertion | 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 og omveksling af billetter:
Afhængighed | Beskrivelse | SecurityTokenService | OIOSaml2Sosi | Sosi2OIOSaml | Bs2Idws | BST2SOSI |
---|---|---|---|---|---|---|
CRA | Spærrelister tilgængelige på NSP platformen | X | X | X | X | X |
Krydscertifikater | Hentes via HTTP fra internettet | X | X | X | X | X |
STS database | Konfiguration og lokal cache af CPR | X | 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 | X |
Autorisationer | Indlæses fra autorisationsregister | X | X | X | ||
Nationale roller (SEB) | X | X | X | |||
RID2CPR | Verifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager | (X) | (X) | (X) | ||
UUID2CPR | Verifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager | (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 Spring frameworket. For nærmere detaljer omkring konfigurationen henvises til installationsvejledningen. 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. Seal anvendes
som et tredjeparts bibliotek af STS.
Figur 2: Komponenter anvendt af STS (ikke udtømmende liste)
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
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.
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
Figur 6: 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 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:
OcesUUID2CPRService |
Validering eller opslag af CPR-nummer ud fra et MOCES certifikats ”subject serial number” (mere specifikt medarbejder uuid'et):
OcesPidService |
Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):
ProcurationService |
Hentning af fuldmagter fra NemLog-In fuldmagtsservicen. Validering af CPR-nummer ud fra en borgers CPR-nummer:
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:
Skema | Tabel | Beskrivelse | Benyttes pt |
---|---|---|---|
STS (backoffice) | iboConfig | indeholder audience specifik konfiguration for SOSI ID-kort til OIOSAML omveksling | Ja |
STS (backoffice) | audienceConfiguration | indeholder konfiguration vedrørende billetomveksling fra bootstrap token til IDWS token og fra JWT token til OIOSaml 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) | authorizationDefinitions | Indeholder valide uddannelseskoder. Primært 4 cifre, men kan også indeholde bogstaver. | 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 (Nø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. 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 |
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 JEE web applikation, som afvikles i driftsmiljøerne som en docker container. Containeren afvikles med en række konfigurationsfiler mounted ind i containeren, disse 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