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 kendskab til STS'ens rolle - specifikt i
relation til ”Den Gode Web Service” og (DGWS) og de standarder den baserer sig på.
...
På NSP anvendes id-kort som single sign-on mekanisme til at autentificere anvendere op mod platformens services. I andre sammenhænge som f.eks. på sundhed.dk eller borger.dk anvendes den fælles offentlig brugerstyring (Nem-Login). STS'en tilbyder billetomveksling for at lette integration mellem disse, så anvendere nemt kan kalde services på tværs af NSP og andre systemer.
Anvenderes tilgang til STS vil ofte være med hjælp fra Seal.Java eller Seal.NET, som er biblioteker der bl.a. hjælper til med at understøtte brugen af DGWS og håndtere sikkerhedsaspekterne.
...
Adgang til NSP-komponenters services er begrænset med autentificering. Denne autentifikation er baseret på OCES-certifikater, hvormed anvendere er i stand til at identificere sig. Det betyder dog ikke at alle services skal validere alle anvenderes certifikater og tilhørende information. Dette vil være et stort ansvar at fordele på så mange komponenter. Derfor er der STS en fælles komponent, som kan udstede adgangsgivende billetter, som kun kræver simpel verifikation i NSP-komponenterne.
Dette betyder at en anvender udelukkende skal identificere sig overfor STS med sit OCES-certifikat og får herefter et id-kort, der er underskrevet med (STS) føderationens certifikat. Dette id-kort agerer som nøglen, der identificerer anvenderen, og kan give adgang til de andre komponenter på NSP. Komponenternes ansvar er derfor kun at kende til STS'ens ene certifikat og verificere dette i id-kortet. STS verificerer og beriger desuden id-kortet med en række af attributter. F.eks. verificeres slutbrugerens personnummer og dennes autorisation.
Ingen STS kræver ingen whitelisting og ingen specifikke WSDL'er eksisterer for STS'ens servicesSTS kræver ingen whitelisting.
| HTML |
|---|
<iframe src="https://archi.nspop.dk/NSP/570928ca/views/24e0d66c.html" name="test" height="1050" width="900">You need a Frames Capable browser to view this content.</iframe> |
...
STS består af en række del-komponenter (eller services), som konfigureres via Spring-frameworket. 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 og den fællesoffentlige fuldmagtsløsning.
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.
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 1: Komponenter anvendt af STS (ikke udtømmende liste)Figur 1: STS-afhængigheder og eksterne snitflader
Oversigt over snitflader og adgang
Følgende er en oversigt over STS snitflader og kravene til adgang til disse:
- NewSecurityTokenService -- Udstedelse af STS-signeret id-kort. Erstatter samtidig NameId til et kanonisk format (nødvendigt hvis id-kortet skal veksles til OIOSaml). SOSI Seal biblioteket benyttes af STS til serialisering/deserialisering af web service kaldet samt signering af udstedte ID-kort.
- SecurityTokenService -- Legacy udgave af ovennævnte service (uden erstatning af NameId). Benyt NewSecurityTokenService hvis muligt.
- Sosi2OIOSaml -- Ombytter STS-signeret id-kort fra SOSI ID-kort til OIOSAML assertion (NemLogin token) rettet mod et specifikt audience, f.eks. sundhed.dk. Bemærk at dette id-kort skal være udstedt af NewSecurityTokenService.
- OIOSaml2Sosi -- Ombytter OIOSaml (nem-login) token til signeret id-kort. Token skal være signeret af troværdig tredjepart (nemlogin).
- Bst2Idws -- Ombytter OIOSaml bootstrap token til signeret identitytoken rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (nem-login).
- JWT2Idws -- Ombytter JSON Web token til signeret identity-token rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (pt. en OID connector).
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 2: STS-afhængigheder og eksterne snitflader
| Begreb | Forklaring |
|---|---|
| Anvendersystem | Det IT- |
| 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:
| 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) |
...
STS’en afhænger af en række eksterne komponenter i forbindelse med udstedelse af og omveksling af billetter. Afhængigheder i parantes anvendes kun i visse scenarier:
| 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
...
- 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
...
| 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 |
...
| ) |
Komponentinteraktion id-kort udstedelse
...
CREATE TABLE iboConfig (
audience VARCHAR(255) NOT NULL,
publicKey TEXT NOT NULL,
recipientURL VARCHAR(255) NOT NULL,
includeBST BOOL NOT NULL,
deliveryNotOnOrAfterOffset BIGINT NOT NULL,
notBeforeOffset BIGINT NOT NULL,
notOnOrAfterOffset BIGINT NOT NULL,
idCardMaxAgeMins BIGINT,
KEY audience (audience)
)
Tabel: trustedCvr
-- new table to hold trustedCvr for national roles
USE sts_audconf;
...
