1. Dokumenthistorik
Version | Dato | Ansvarlig | Beskrivelse |
1 | 6.7.2018 | KSR | Opdateret på baggrund af Fuldmagtsprojektet |
2 | 6.7.2018 | KSR | Opdateret med information om JWT support |
2 | 7.7.2019 | JPE | Opdateret i forhold til containerization af STS. |
2. Introduktion
Dette dokument indeholder en vejledning til driften af SOSI-STS.
3. Begreber
I følgende dokumentation anvendes en række begreber. Den følgende liste er en liste af disse samt forklaring.
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. |
4. Oversigt over snitflader og adgang
Følgende er en oversigt over STS snitflader.
De enkelte snitflader er beskrevet ved at definere, hvilke anvendersystemer, brugere samt modtager de er tiltænkt.
Snitflade | Anvenderkrav | Særlige opsætningstilfælde | Modtager |
---|---|---|---|
DGWS | |||
/sts/services/SecurityTokenService /sts/services/NewSecurityTokenService | Alle som har netværksmæssig adgang | Alle DGWS-services | |
Medarbejderomveksling | |||
/sts/services/Sosi2OIOSaml | Alle som har netværksmæssig adgang | Modtagersystem skal være konfigureret: | |
/sts/services/OIOSaml2Sosi | Alle som har netværksmæssig adgang | Alle DGWS-services | |
/sts/services/BST2SOSI | Offentlig nøgle for anvendersystem skal være whitelistet: Opsætning af BST2SOSI: Tilføjelse af ny anvender | Alle DGWS-services | |
Borgeromveksling | |||
/sts/services/Bst2Idws | Offentlig nøgle for anvendersystem skal være whitelistet: Borgeromvekslinger: Whitelisting af anvender | Modtagersystem (audience) skal være konfigureret: | |
/sts/services/JWT2Idws | Offentlig nøgle for anvendersystem skal være whitelistet: Borgeromvekslinger: Whitelisting af anvender | Modtagersystem (audience) skal være konfigureret: JWT support skal være aktiveret (i tabellen audienceConfiguration): | |
/sts/services/JWT2OIOSaml | Offentlig nøgle for anvendersystem skal være whitelistet: Borgeromvekslinger: Whitelisting af anvender | Modtagersystem (audience) skal være konfigureret: Servicen skal være konfigureret til audience: |
Selve konfiguration i forhold til de enkelte snitflader er beskrevet nedenfor.
5. Java keystores
Der benyttes et antal java keystores i løsningen. Disse er typisk placerede i folderen /pack/sts Disse beskrives nedenfor.
Navn | Kort beskrivelse | Kommentarer |
---|---|---|
teststs-1.keystore | STS keystore | Fil baseret keystore der indeholder STS eget certifikat. Benyttes kun i test-miljøer uden LUNA integration |
testtdc.keystore | Truststore for Digst services. | Truststore i forhold til PID/CVR-RID services. Benyttes i NSP-miljøer ikke fra wildfly, men er opsat i Traffic-manager i stedet. I lokale testmiljøer benyttes den i stedet fra wildfly |
nsp-test-rid.jks | Keystore i forhold til backend services. | Benyttes til at identificere os (STS) i forhold til backend services som PID, CVR-RID og fuldmagt. Benyttes dels fra Traffic-manager (PID, CVR-RID), dels fra NSP (er opsat via global system-property af hensyn til fuldmagt). |
test-new-nemLogin-idp.keystore | Truststore til NBO og borger billetomveksling | Indeholder de idp'er (primært nemlogin) vi stoler på som udstedere af de billetter vi omveksler. |
test-jwt-idp-trust.jks | Truststore til JWT billetomveksling | Indeholder de idp'er (primært nemlogin) vi stoler på som udstedere af de billetter vi omveksler. STS-2.5.3 |
5.1. Konfiguration af test-new-nemLogin-idp.keystore
Konfigurationen findes i et java keystore (pt. placeret som /pack/sts/test-new-nemLogin-idp.keystore ).
Dette indeholder de certifikater for troværdige tredjepart, vi stoler på.
Dette keystore anvendes af SOSI STS i forbindelse med følgende omvekslinger:
- Medarbejderomvekslingen OIOSaml2Sosi
Der er ingen krav til hvilke alias'er disse certifikater befinder sig under.
Der er opsat trust af NemLog-in, samt evt. et eller flere yderligere certifikater til interne testformål. Det enkelte certifikat valideres i forbindelse med at det forsøges anvendt.
Fra sts 2.5.3 indgår monitorering af certifikaterne i monitorerings URL'en /sts/checkstatus.
5.1.1. Tilføjelse af trust til ny, ekstern idp
- Modtag offentlig nøgle fra den eksterne part.
- Verificer at nøglen tilhører det rigtige miljø (test vs produktion) - og er et gyldigt FOCES certifikat
- Indsæt nøglen under et vilkårligt alias i test-new-nemLogin-idp.keystore
- Ændringen kræver genstart af STS (eller wildfly).
5.1.2. Fornyelse af certifikat for ekstern idp
- Tilføj det nye certifikat ifølge proceduren for oprettelse af ny idp - så både gammelt og nyt certifikat eksisterer samtidig.
- Når det gamle certifikat ikke bruges mere kan dette efterfølgende fjernes ved førstkommende lejlighed.
5.2. Konfiguration af test-jwt-idp-trust.jks
Konfigurationen findes i et java keystore (pt. placeret som /pack/sts/test-jwt-idp-trust.jks ). Dette indeholder de certifikater vi stoler på.
Status på de indeholdte certifikater kan følges på monitorerings-urlen /sts/checkstatus. Enkelte certifikater er dog ignorerede i test, idet disse udelukkende er med for at kunne teste fejlscenarier.
Dette keystore anvendes af SOSI STS i forbindelse med følgende omvekslinger:
- Borgeromvekslingerne JWT2IDWS og JWT2OIOSAML
Der er strikse krav til hvilke alias'er disse certifikater befinder sig under (se punkt 3 i vejledningen "Tilføjelse af trust til ny, ekstern idp" nedenfor for en beskrivelse af dette).
Der er i første omgang opsat trust af et par certifikater til interne testformål. Det enkelte certifikat valideres i forbindelse med at det forsøges anvendt.
5.2.1. Tilføjelse af trust til ny, ekstern idp.
- Modtag offentlig nøgle fra den eksterne part.
- Modtag information om hvilket kid der angives i det indgående JWT (key identifier der benyttes af den eksterne part).
- Verificer at nøglen tilhører det rigtige miljø (test vs produktion) - og er et gyldigt FOCES certifikat
- Indsæt nøglen under et alias svarende til det angivne kid i /pack/sts/test-jwt-idp-trust.jks
- Ændringen kræver genstart af STS (eller wildfly)
5.2.2. Fornyelse af certifikat for ekstern idp.
Samme procedure som ved oprettelse. Det nye certifikat placeres under relevante kid (=alias) ved siden af det gamle. Det vil typisk ikke være grund til at rette issuer.
Det gamle kan efterfølgende fjernes, når det ikke længere benyttes.
6. Konfiguration
I de følgende afsnit gennemgås konfigurationerne for de enkelte snitflader. De enkelte snitfladers opsætning beskrives og derudover beskrives en opskrift/checkliste i forhold til tilslutning af nye anvendere.
6.1. Konfiguration af DGWS
Trustmodellen for DGWS er baseret på, at anvenderen signerer det indgående idkort ved anvendelse af et OCES certifikat udstedt af krydscertifikater (intermediate certificates) som er udstedt af CA rodcertifikatet i den fællesoffentlige føderation.
Disse rodcertifikater vedligeholdes som en del af SEAL.JAVA biblioteket og skal derfor ikke konfigureres særskilt i STS.
6.1.1. Opsætning: Nationale roller
Ved udstedelse af id-kort, enten på baggrund af selv-signeret id-kort eller ved omveksling af NemLog-in token, er det muligt at anvende nationale roller.
De gyldige roller opsættes i tabellen sts_audconf.roleDefinitions.
Nationale roller vil optræde i id-kortet som en rolle på formen urn:dk:healthcare:national-federation-role:code:40001:value:Laegesekretaer
Følgende felter er relevante
Felt | Beskrivelse |
---|---|
source | Kan benyttes til at identificere hvor de konkrete roller ligger. Pt. er eneste benyttede værdi 'NationalFederation' |
externalName | Det navn hvorunder rollen optræder i den eksterne kilde (SEB brugerkataloget) , f.eks. 'nspLaegesekretaer' |
code | Den kode der indgår i id-kortet, f.eks. 40001 |
value | Den tekst-værdi der indgår i id-kortet, f.eks. Laegesekretaer |
Konfiguration i database er altid den gældende — det er ikke nødvendigt at genstarte før ændringer træder i kraft - der kan dog være op til 10 minutters forsinkelse.
Eksempel-SQL:
use sts_audconf; insert into roleDefinitions (source, externalName, code, value) values ('NationalFederation', 'nspPlejeAssR3', '41003', 'PlejeAssR3');
6.1.2. Opsætning: Trust af nationale roller
Nationale roller som beskrevet ovenfor valideres som udgangspunkt mod de roller der fremfindes i SEB brugerkataloget. Det er dog muligt at tillade enkelte udvalgte cvr-numre (f.eks. regioner) at angive roller i idkortet uden at få disse valideret via SEB. Dette styres via tabellen sts_audconf.trustedCvr.
Felt | Beskrivelse |
---|---|
cvr | Et cvr nummer der tillades adgang uden validering af nationale roller. |
endpoint | Det endpoint hvortil funktionaliteten kan benyttes. Mulige værdier er
Af sikkerhedsmæssige årsager anbefales funktionaliteten pt kun benyttes for 'STS'. |
roleValue | Den nationale rolle som er tilladt for CVR-nummeret. 'NULL' tillader alle roller. Kun 'value'-delen af rolledefinitionen angives. |
6.2. Konfiguration af medarbejderomvekslinger
STS indeholder en række omvekslingssnitflader til brug for brugere af typen medarbejder.
Trustmodellen og opsætningen for de enkelte snitflader er opsummeret i nedenstående tabel og uddybet i de underliggende afsnit:
Snitflade | Trust og opsætning |
---|---|
Medarbejderomveksling | |
/sts/services/Sosi2OIOSaml |
|
/sts/services/OIOSaml2Sosi |
|
/sts/services/BST2SOSI |
|
6.2.1. Opsætning af Sosi2OIOSaml
Den generelle konfiguration for denne service ligger i services.xml på bean iboRequestHandler og består af følgende:
Property | Beskrivelse |
---|---|
validateEnvelopeSignature | Om envelope signaturen på requests skal valideres |
checkTargetCertificate | Om gyldigheden af certifikat svarende til publicKey (i nedenstående tabel) skal tjekkes før den benyttes |
emptyAttributeValue | Værdi, der skal bruges til at erstatte tomme attributter på den genererede OIO Saml Assertion |
Disse opsætninger er globale for alle anvendere.
Derudover vil der i forespørgsler til denne omvekslingssnitflade indgå et audience, der identificerer det tiltænkte modtagersystem.
De tilladte audience konfigureres i STS databasen i tabellen sts_audconf.iboConfig; disse er:
Felt | Beskrivelse | Påkrævet |
---|---|---|
audience | Identifikation af modtagersystemet som en URI, der skal være på normalform. | Ja |
publicKey | Den offentlige nøgle som anvendes til kryptering af den omvekslede token. Bemærk at indholdet er tilgivende overfor line-breaks og whitespaces, så der kan formateres valgfrit. | Ja |
recipientURL | Den URL hvor modtagersystemet kan nås på. | Ja |
includeBST | Om idkort/bootstrap token skal inkluderes i den udstedte assertion. (ja/nej) | Ja |
deliveryNotOnOrAfterOffset | Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion. | Ja |
notBeforeOffset | Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion. | Ja |
notOnOrAfterOffset | Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion. | Ja |
idCardMaxAgeMins | Maksimal alder på id-kortet | Nej (default er 1440 min) |
6.2.1.1. Opsætning: Tilføjelse af nyt modtagersystem
Der kan tilføjes nye audience ved indsættelse af en ny række i tabellen iboConfig.
Denne tabel skal kun opdateres hvis Sosi2OIOSaml skal benyttes for et audience, der ikke allerede er konfigureret.
6.3. OIOSaml2Sosi
Den generelle konfiguration for denne service ligger i services.xml på bean nboConfiguration:
Property | Beskrivelse |
---|---|
fuzzyTime | Antal millisekunder tilbage i tid createdDate skal sættes på resulterende idkort |
idCardDuration | Antal millisekunder det resulterende idkort er gyldigt |
allowedDriftInSeconds | Antal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne) |
trustedVault | Keystore med trusted eksterne idp'er |
cprTrustCertificates | SubjectSerialNumber på eksterne idp'er hvor medsendte cpr-nummer ikke skal valideres |
Trust til eksterne idp'er er sat op i test-new-nemLogin-idp.keystore (trustedVault i konfigurationen). Se afsnittet om Java keystores.
6.3.1. Tilføjelse af ny trusted IdP
Hvis der skal tilføjes trust til en ny idp, skal det opdateres i test-new-nemLogin-idp.keystore, som beskrevet i afsnittet om Java keystores.
Evt. kan property cprTrustCertificates opdateres.
6.4. BST2SOSI
Den generelle konfiguration for denne service ligger i services.xml på bean BST2SOSIRequestHandler:
Property | Beskrivelse |
---|---|
allowedDriftInSeconds | Antal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne) |
allowedAudience | Gyldigt audience i indgående bootstraptoken |
fuzzyTime | Antal millisekunder tilbage i tid createdDate skal sættes på resulterende idkort |
idCardDuration | Antal millisekunder det resulterende idkort er gyldigt |
whitelistValidation | Om whitelist-checks af anvender certifikater skal være slået til eller fra |
De konkrete udstedere (af bootstrap tokens) samt anvendere af omvekslingsservicen er konfigureret i databasen i tabellen sts_audconf.trustedIdpConfiguration:
Felt | Beskrivelse |
---|---|
issuer | Identifikation på udstederen af bootstraptokens |
attribute | Attribut navn |
attribute_value | Attribut værdi |
comment | Valgfri kommentar - specielt brugbart til whitelist indgange uden identifikation af organisationen |
De konkrete attributter, der skal opsættes for hhv. udstedere og anvendere er dokumenteret i de følgende to afsnit
6.4.1. Opsætning af BST2SOSI: Tilføjelse af ny udsteder af bootstrap token
Som beskrevet i forgående afsnit skal konfiguration af udsteder af bootstrap token ske i tabellen sts_audconf.trustedIdpConfiguration.
For opsætning af udstedere af bootstrap tokens er følgende attributter gyldige:
attribute | Beskrivelse |
---|---|
encryptionKey.xxx | Eventuel anvendt krypteringsnøgle (private key) til token (en issuer kan have flere krypteringsnøgler med forskellige xxx navne). Suffikset er ligegyldigt og tjener alene til støtte for den, som kigger på konfigurationen. |
encryptionPublicKey.xxx | Offentlig krypteringsnøgle (public key). For hver encryptionKey attribut, sættes en tilsvarende encryption PublicKey attribut med den offentlige nøgle. Denne benyttes ikke af STS, men skal udleveres til anvenderen. xxx suffikset kan med fordel matche suffikset for den private nøgle. |
tokenProfile.xxx | Anvendt tokenprofil. OIOH3BST (lokal IdP udstedt), OIOH2BST (SEB udstedt) eller OIO3BST (NemLog-in3 STS udstedt). En issuer kan have flere token profiler med forskellige xxx navne. Suffikset er ligegyldigt og tjener alene til støtte for den, som kigger på konfigurationen. |
validateHOK | Angivelse af om holder-of-key (HoK) validering af requests skal udføres (true, false). |
signingKey.xxx | Trusted public key som kan verificere signatur på bootstrap token (en issuer kan have flere nøgler med forskellige xxx navne). |
Som template for opsætningen af udsteder af bootstraptoken kan følges anvendes. I eksemplet nedenfor opsættes issueren med identifikationen 'https://oio3bst-issuer.dk':
6.4.2. Opsætning af BST2SOSI: Tilføjelse af ny anvender
Anvendere af servicen skal whitelistes. Som ovenfor foregår dette ved indsættelse af passende data i tabellen sts_audconf.trustedIdpConfiguration.
For opsætning af anvendere af servicen er følgende attributter gyldige:
attribute | Beskrivelse |
---|---|
certificate.xxx | Angiver SubjectSerialNumber (ssn) for et certifikat der har mulighed for at benytte servicen. Dette certifikat benyttes af anvender til at signere hele beskeden. Sættes issuer til "*" vil certifikatet være gyldigt for alle issuers. Der kan være flere certifikater pr. issuer, hvilket blot betyder at flere anvendere kan tilgå det. Disse skal blot have forskellige xxx navne. Suffikset er ligegyldigt og tjener alene til støtte for den som kigger på konfigurationen. Bemærk: Benyttes kun hvis whitelist-checks er slået til (property whitelistValidation) |
Som template for opsætningen af udsteder af bootstraptoken kan følges anvendes. I eksemplet nedenfor opsættes issueren med identifikationen 'https://oio3bst-issuer.dk':
7. Konfiguration af borgeromvekslinger
Snitflade | Trust og opsætning |
---|---|
Borgeromveksling | |
/sts/services/Bst2Idws | Bootstrap token skal være signeret af trusted part (konfigureret i database tabellen sts_audconf.trustedIdpCitizenConfiguration). I praksis NemLog-In eller SEB |
/sts/services/JWTIdws | 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 |
/sts/services/JWT2OIOSaml | 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 |
7.1. Opsætning af borgeromvekslinger: Tilføjelse af nyt audience
For alle borgeromvekslingerne gælder det, at de audience, der omveksles til skal være sat op i STS. Dette audience kommer i spil, idet anvendere af borger-billetomvekslingen angiver, hvilket audience de ønsker billetten udstedt til.
Disse opsætninger sker i tabellen sts_audconf.audienceConfiguration:
Felt | Beskrivelse |
---|---|
audience | Identifikation af audience |
attribute | Attribut navn |
attribute_value | Attribut værdi |
comment | Valgfri kommentar |
Gyldige attributter for opsætning af nyt audience er:
attribute | Beskrivelse |
---|---|
lifetime | Angiver gyldighed af det udstedte token, f.eks. 3600 (s). Tilstedeværelsen af denne "aktiverer" det givne audience |
Bemærk: Kombinationen af audience og attribut skal være unik, ellers vil "duplikater" blive ignoreret.
Eksempel: For at konfigurere et nyt audience 'https://fmk' skal følgende SQL udtryk udføres:
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('https://fmk', 'lifetime', '300');
7.2. Opsætning af borgeromvekslinger: Sløring af ansattes identitet
Identitetssløring af Ansatte i Sundhedsvæsenet (IDSAS) kan aktiveres for et bestemt audience. Dette gøres med attributten "blurring":
attribute | Beskrivelse |
---|---|
blurring | Angiver hvorvidt der skal foretages sløring eller ej for ansattes identitet, for det angivne audience. Angives som "true" eller "false". |
I praksis vil dette kun være relevant for minlog. STS'ens opgave bliver at leverer en liste af CVR-numre, hentet fra IDSAS, som der skal lave sløring på, såfremt "blurring" er sat til "true". Det vil defor kun være de CVR-numre, som er registreret i IDSAS, som vil blive slørret i praksis.
Eksempel på opsætning af sløring:
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('https://minlog', 'blurring', 'true');
URL til IDSAS sættes i idsas.xml.
7.3. Opsætning af borgeromvekslinger: Whitelisting af anvender
Anvendere af servicen skal whitelistes i forhold til et givent audience i tabellen sts_audconf.audienceConfiguration (se ovenfor i Opsætning af borgeromvekslinger: Tilføjelse af nyt audience for en beskrivelse af tabellen).
Konfigurationen består af et antal indgange på "map-format", audience, attribute, attribute_value, comment. I forhold til whitelisting er følgende attribute relevant:
attribute | Beskrivelse |
---|---|
certificate.xxx | Angiver SubjectSerialNumber (ssn) for et certifikat (typisk FOCES) der har mulighed for at benytte servicen. I praksis beder vi om det offentlige certifikat og henter oplysningen ud herfra. Dette certifikat benyttes af anvender til at signere hele beskeden (beskeden har så bl.a. en Assertion, typisk signeret af NemLog-in). Der kan (og vil) være flere certifikater pr. audience, hvilket blot betyder at flere anvendere kan tilgå det. Disse skal blot have forskellige xxx navne. Suffikset er ligegyldigt og tjener alene til støtte for den som kigger på konfigurationen. |
Bemærk: Kombinationen af audience og attribut skal være unik, ellers vil "duplikater" blive ignoreret.
For at whiteliste en anvender til f.eks. audience 'https://fmk' kan følgende SQL anvendes:
INSERT INTO audienceConfiguration (audience, attribute, attribute_value, comment) VALUES ('http://fmk', 'certificate.testcertificate', 'UI:DK-b9def702-0b08-4eac-8551-fb865e449883', 'oprettet til organisation xyz pba NETIC-83439');
7.4. Bst2Idws
Omveksling fra Bootstrap token til identitytoken benyttes til at veksle et Bootstraptoken udstedet af NemLog-in på vegne af en borger, til et identitytoken, der kan benyttes til borgersnitflader (IDWS snitflader) udbudt af f.eks. FMK, DDV, MinLog2, MinSpærring og Dokumentdelingsservicen.
Den generelle konfiguration for denne service ligger i services.xml på bean nboConfiguration, ligesom for OIOSaml2Sosi omvekslingen. Til denne omveksling benyttes dog kun de to properties fuzzyTime og allowedDriftInSeconds.
De konkrete udstedere (af bootstrap tokens) samt anvendere af omvekslingsservicen er konfigureret i databasen. De konkrete opsætninger er gennemgået i de følgende afsnit.
7.4.1. Opsætning af BST2Idws: Tilføjelse af ny udsteder af bootstrap token
Database tabellen sts_audconf.trustedIdpCitizenConfiguration benyttes til konfiguration for issuers af de indgående bootstraptokens:
Felt | Beskrivelse |
---|---|
issuer | Identifikation på udstederen af bootstraptokens |
attribute | Attribut navn |
attribute_value | Attribut værdi |
comment | Valgfri kommentar - specielt brugbart til whitelist indgange uden identifikation af organisationen |
Gyldige attributter for opsætning af ny udsteder i tabellen er:
atribute | Beskrivelse |
---|---|
encryptionKey.xxx | Eventuel anvendt krypteringsnøgle til token (en issuer kan have flere krypteringsnøgler med forskellige xxx navne). Suffikset er ligegyldigt og tjener alene til støtte for den som kigger på konfigurationen. |
encryptionPublicKey.xxx | Offentlig krypteringsnøgle (public key). For hver encryptionKey attribut, sættes en tilsvarende encryptionPublicKey attribut med den offentlige nøgle. Denne benyttes ikke af STS, men skal udleveres til anvenderen. xxx suffikset kan med fordel matche suffikset for den private nøgle. |
tokenProfile.xxx | Anvendt tokenprofil. OIO2BST_CITIZEN (SEB udstedt), OIO3BST_CITIZEN (NemLog-in3 STS udstedt) eller OIO2BST_LEGACY (NemLog-in2 udstedt). En issuer kan have flere token profiler med forskellige xxx navne. Suffikset er ligegyldigt og tjener alene til støtte for den, som kigger på konfigurationen. |
signingKey.xxx | Angiver trusted certifikater til signering af BST tokenet (en issuer kan have flere trusted certifikater med forskellige xxx navne). |
audience | Angiver gyldigt audience for dette token. |
Som template for opsætningen af udsteder af bootstraptoken kan følges anvendes. I eksemplet nedenfor opsættes issueren med identifikationen 'https://oio3bst-issuer.dk':
7.5. JWT2Idws
Tilsvarende Bst2Idws findes en omveksling fra JSON web token til identity tokens ligeledes målrettet mod borgere.
Den generelle konfiguration for denne service ligger i services.xml på bean jwt2IdwsRequestHandler:
Property | Beskrivelse |
---|---|
fuzzyTime | Antal millisekunder tilbage i tid notBefore skal sættes på resulterende token |
allowedDriftInSeconds | Antal sekunder tidsbegrænsninger i indgående token må afvige med |
trustStoreFile | Sti til keystore med trusted eksterne idp'er |
trustStorePassword | Password til keystore |
issuerStrategies | Liste af gyldige issuers. Fx <entry key="http://sts-tester" value-ref="keyCloak"/> |
7.5.1. Konfiguration af udsteder af JWT tokens
Trust til eksterne idp'er er sat op i test-jwt-idp-trust.jks (property trustStoreFile). Se afsnittet om Java keystores.
7.5.2. Aktivering af audience til brug i JWT2Idws
Ligesom for Bst2Idws kræves konfiguration pr audience i database tabellen sts_audconf.audienceConfiguration som beskrevet i den generelle opsætninger for borgeromveksling: Opsætning af borgeromvekslinger: Tilføjelse af nyt audience.
Dog skal der sættes ekstra attribut i forbindelse med jwt.
attribute | Beskrivelse |
---|---|
jwtScope | Aktiverer JWT (Json web token) support for dette audience. Omveksling kan kun foretages hvis det indgående JWT indeholder det pågældende jwtScope. Værdien aftales ved oprettelse. |
Attributten sættes op pr audience på følgende måde:
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('http://fmk', 'jwtScope', 'fmk');
7.5.3. Tilføjelse af ny anvender
Som beskrevet i den generelle beskrivelse: whitelisting af anvender til borgeromveksling
Anvender skal kende det eksisterende jwtScope.
7.6. JWT2OIOSaml
Den generelle konfiguration for denne service ligger i services.xml på bean sboRequestHandler:
Property | Beskrivelse |
---|---|
checkTargetCertificate | Om gyldigheden af certifikat svarende til publicKey (i nedenstående tabel) skal tjekkes før den benyttes |
fuzzyTime | Antal millisekunder tilbage i tid notBefore skal sættes på resulterende token |
allowedDriftInSeconds | Antal sekunder tidsbegrænsninger i indgående token må afvige med |
trustStoreFile | Sti til keystore med trusted eksterne idp'er |
trustStorePassword | Password til keystore |
issuerStrategies | Liste af gyldige issuers. Fx <entry key="http://sts-tester" value-ref="keyCloak"/> |
Ligesom for JWT2Idws, er trust til eksterne idp'er sat op i test-jwt-idp-trust.jks (property trustStoreFile). Se afsnittet om Java keystores.
7.6.1. Aktivering af audience til brug i JWT2OIOSaml
Ligesom for Bst2Idws kræves konfiguration pr audience i database tabellen sts_audconf.audienceConfiguration som beskrevet i den generelle opsætninger for borgeromveksling: Opsætning af borgeromvekslinger: Tilføjelse af nyt audience.
Dog skal der sættes ekstra attributter i forbindelse med jwt.
atributeName | Beskrivelse |
---|---|
jwtScope | Aktiverer JWT (Json web token) support for dette audience. Omveksling kan kun foretages hvis det indgående JWT indeholder det pågældende jwtScope. Værdien aftales ved oprettelse. |
publicKey | Den offentlige nøgle som anvendes til kryptering af den omvekslede token. Bemærk at indholdet er tilgivende overfor line-breaks og whitespaces, så der kan formateres valgfrit. |
recipientURL | Den URL hvor modtagersystemet kan nåes på. |
includeBST | Om token skal inkluderes i den svarede assertion. (ja/nej) |
7.6.2. Tilføjelse af ny anvender
Er den angivne issuer endnu ikke konfigureret, skal test-jwt-idp-trust.jks opdateres, som beskrevet i afsnittet om Java keystores. Derudover skal property issuerStrategies opdateres i services.xml med den nye issuer.
Er det angivne audience endnu ikke konfigureret, skal audienceConfiguration tabellen opdateres med attributter for denne.
Er audience allerede i audienceConfiguration tabellen, skal der oprettes en ny certificate.xxx attribut med ssn for anvendercertifikatet. Anvender skal kende det eksisterende jwtScope.
8. Certifikat fornyelser hos anvender system
Såfremt der er tale om en simpel fornyelse hos anvender systemet, hvor SubjectSerialNumber ikke ændres, skal der ikke foretages noget.
Såfremt der er tale om helt nye nøgler, indsættes den nye ved siden af den gamle. Efterfølgende kan den gamle fjernes hvis/når den ikke længere benyttes.
9. SLA logning
Følgende tabel viser STS’ens sla logpunkter samt tilhørende navn. De enkelte logpunkter beskrives i detaljer i det følgende.
ID | Navn | Beskrivelse |
---|---|---|
200 | AbstractStsRequestHandler.request | Alle forespørgelser, der modtages rammer dette logpunkt. |
210 | SecurityTokenService.issueIdCard | Når et IDKort signeres, vil dette logpunkt blive ramt. |
220 | WsOcesCvrRidService.findRelatedCpr | Ved opslag til CVR-RID tjenesten vil dette logpunkt blive ramt. |
221 | WsOcesPidService.isRelated | Ved opslag til PID tjenesten vil dette logpunkt blive ramt. |
222 | ProcurationWebService.getProcurationPrivileges | Ved opslag til Fuldmagt tjenesten vil dette logpunkt blive ramt. |
250 | NboRequestHandler.serialize | Ved omveksling mellem OIOSaml tokens (NemLogin tokens) til SOSI |
260 | SignatureProvider.sign | Dette logpunkt kaldes når STS signerer enten et id-kort eller en IDWS billet. |
270 | NboIdwsRequestHandler.convert | Dette logpunkt ved omveksling af andet token til et borger-IDWS-token |
280 | BST2SOSIRequestHandler.convert | Ved omveksling fra OIO BST token til SOSI idkort. |
10. Monitoring
Sts kan overvåges ved at tilgå monitoreringsendpoint: /sts/checkstatus
Nedenstående er et eksempel på output:
Som en del af outputtet leveres information om de trustede certifikater, der i øjeblikket er konfigureret i STS. Formatet af disse linjer følger følgende skabelon Truststore/alias - > SubjectSerialNumber: Status (Expires: Not-After)
Certifikater, der er på ignorelisten vil optræde i output, men deres faktiske status vil ikke påvirke den samlede status rapporteret i endpointet.
11. Genstart
Servicen kan genstartes ved at genstarte den docker container, som servicen den kører i.