Introduktion

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

Arkitekturoverblik

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.


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/BST2SOSIWS-Trust 1.4 (OIO-IDWS 1.0)Alle som har netværksmæssig adgangAlle 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/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

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

/sts/services/JWT2OIOSamlWS-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ængighedBeskrivelseSecurityTokenServiceOIOSaml2SosiSosi2OIOSamlBs2IdwsBST2SOSI
CRASpærrelister tilgængelige på NSP platformenXXXXX
KrydscertifikaterHentes via HTTP fra internettetXXXXX
STS databaseKonfiguration og lokal cache af CPRXXXXX
STS keystoreIndeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fraXXXXX
AutorisationerIndlæses fra autorisationsregisterXX

X
Nationale roller (SEB)
XX

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

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



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

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

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. Check af certifikat til CPR-tilknytning
  5. Check af autorisation knyttet til CPR
  6. Signering af ID-kort med STS-certifikat
  7. 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 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.

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: