Page History
...
| Table of Contents | ||
|---|---|---|
|
Introduktion
Dette dokument indeholder en vejledning til driften af SOSI-STS.
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. |
Oversigt over snitflader og adgang
Følgende er en oversigt over STS snitflader.
...
| 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: | |
| eHDSI omveksling | |||
| /sts/services/DKNCPBST2EHDSIIdws | Offentlig nøgle for anvendersystem skal være whitelistet: | Servicen skal være konfigureret til audience: | |
Selve konfiguration i forhold til de enkelte snitflader er beskrevet nedenfor.
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 |
| Anchor | ||||
|---|---|---|---|---|
|
Konfigurationen findes i et java keystore (pt. placeret som /pack/sts/test-new-nemLogin-idp.keystore ).
...
Fra sts 2.5.3 indgår monitorering af certifikaterne i monitorerings URL'en /sts/checkstatus.
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).
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.
| Anchor | ||||
|---|---|---|---|---|
|
Konfigurationen findes i et java keystore (pt. placeret som /pack/sts/test-jwt-idp-trust.jks ). Dette indeholder de certifikater vi stoler på.
...
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.
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)
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.
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.
...
Generel konfiguration
HTTP status kode ved SOAP faults
Den HTTP status kode der benyttes når der returneres en SOAP fault, er konfigureret i service.xml
Status koden vil blive benyttet i alle snitflader.
| Code Block | ||
|---|---|---|
| ||
<bean id="httpCodeForFaultResponse" class="java.lang.Integer">
<constructor-arg value="200"/>
</bean> |
Konfiguration af DGWSAnchor KonfigurationDGWS KonfigurationDGWS
| KonfigurationDGWS | |
| KonfigurationDGWS |
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
...
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.
Anchor DgwsNationaleRoller DgwsNationaleRoller
Opsætning: Nationale roller
| DgwsNationaleRoller | |
| DgwsNationaleRoller |
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.
...
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.
...
| Code Block | ||
|---|---|---|
| ||
use sts_audconf;
insert into roleDefinitions (source, externalName, code, value) values ('NationalFederation', 'nspPlejeAssR3', '41003', 'PlejeAssR3'); |
| Anchor | ||||
|---|---|---|---|---|
|
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. |
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:
| Anchor | ||||
|---|---|---|---|---|
|
Validering af CVR whitelisting kan slås til/fra vha konfigurationsparameteren: validateCvrWhitelisting. Værdien sættes til enten true eller false.
Når DGWS snitfladen kaldes med et MOCES certifikat, så valideres CVR nummeret mod de CVR numre der findes i tabellen sts_audconf.whitelistedUserIdCardCvr.
Hvis valideringen er slået til og cvr nummeret ikke findes i tabellen, så afvises kald med MOCES certifikater og der bliver ikke udstedt et ID-kort.
| Felt | Beskrivelse |
|---|---|
| cvr | cvr nummer der giver adgang til omvekslingen hvis valideringen er slået til. |
| comment | Fritekst felt. Kan f.eks. indeholde beskrivelse af hvilken organisation cvr nummeret hører under. |
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 | |
| Snitflade | Trust og opsætning |
| Medarbejderomveksling | |
| /sts/services/Sosi2OIOSaml |
|
| /sts/services/OIOSaml2Sosi |
|
| /sts/services/BST2SOSI |
|
Opsætning af Sosi2OIOSaml
Den generelle konfiguration for denne service ligger i services.xml på bean iboRequestHandler og består af følgende:
...
| 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) |
| Anchor | ||||
|---|---|---|---|---|
|
Der kan tilføjes nye audience ved indsættelse af en ny række i tabellen iboConfig.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
USE sts_audconf;
INSERT INTO `iboConfig`
(audience,
publicKey,
recipientURL,
includeBST,
deliveryNotOnOrAfterOffset,
notBeforeOffset,
notOnOrAfterOffset,
idCardMaxAgeMins)
VALUES
('/ststest3', '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',
'/ststest/login',
true,
0,
0,
3600000,
null); |
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.
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.
BST2SOSI
Den generelle konfiguration for denne service ligger i services.xml på bean BST2SOSIRequestHandler:
...
De konkrete attributter, der skal opsættes for hhv. udstedere og anvendere er dokumenteret i de følgende to afsnit
| Anchor | ||||
|---|---|---|---|---|
|
Som beskrevet i forgående afsnit skal konfiguration af udsteder af bootstrap token ske i tabellen sts_audconf.trustedIdpConfiguration.
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
-- Opsætning af krypteringsnøgle for udstederen. Der kan være flere - suffix muliggør flere nøgler INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'encryptionKey.1', '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' ); -- Den anvendte tokenprofil angives (se værdier i tabellen ovenfor) INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'tokenProfile.1', 'OIO3BST' ); -- Skal Holder of Key valideres ved omveksling (true/false)? INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'validateHOK', 'true' ); -- Signeringsnøgle til validering af signatur på bootstraptoken - Der kan være flere - suffix muliggør flere nøgler INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'signingKey.valid', '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' ); -- Signeringsnøgle til validering af signatur på bootstraptoken - Der kan være flere - suffix muliggør flere nøgler INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'signingKey.revoked', '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' ); |
| Anchor | ||||
|---|---|---|---|---|
|
Anvendere af servicen skal whitelistes. Som ovenfor foregår dette ved indsættelse af passende data i tabellen sts_audconf.trustedIdpConfiguration.
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
-- Whitelisting af certifikat for anvender til at veksle bootstraptoken udstedt af https://oio3bst-issuer.dk INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value, comment) VALUES ( 'https://oio3bst-issuer.dk', 'certificate.testorganisationa', 'UI:DK-E:C:e9f5888c-26c1-46f7-b22f-de1cf658b0d9', 'Whitelisting af TestOrganisation A/S' ); -- Whitelisting af certifikat for anvender til at veksle bootstraptoken udstedt af alle udstedere INSERT INTO trustedIdpConfiguration (issuer, attribute, attribute_value, comment) VALUES ( '*', 'certificate.testorganisationa', 'UI:DK-E:C:e9f5888c-26c1-46f7-b22f-de1cf658b0d9', 'Whitelisting af TestOrganisation A/S' ); |
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 |
| Anchor | ||||
|---|---|---|---|---|
|
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.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('https://fmk', 'lifetime', '300'); |
| Anchor | ||||
|---|---|---|---|---|
|
Identitetssløring af Ansatte i Sundhedsvæsenet (IDSAS) kan aktiveres for et bestemt audience. Dette gøres med attributten "blurring":
...
URL til IDSAS sættes i idsas.xml.
| Anchor | ||||
|---|---|---|---|---|
|
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).
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
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'); |
Opsætning af borgeromvekslinger: Whitelisting af anvendere der må claime "ward custody" (værgerelation)
Ved anvendelse af Subject Relations Profile, er det muligt at claime forskellige relationer. I praksis kan man enten claime forældremyndighed eller værgerelation.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
INSERT INTO audienceConfiguration (audience, attribute, attribute_value, comment)
VALUES ('https://minlog', 'srp.ward.certificate', 'UI:DK-O:G:23550132-5e1f-4e43-a5f9-048acf49e0b8', "FMK Online"); |
Opsætning af borgeromvekslinger: Minimumsalder for borgere der kan få udstedt en IDWS billet
Dette konfigureres fælles for alle tre borgeromvekslinger på bean minimumAllowedAge der findes i services.xml:
| Property | Beskrivelse |
|---|---|
| minimumAllowedAge | Minimumsalder for en person der kan få udstedt en IDWS-billet. Hvis borgeren er yngre, så bliver forespørgslen afvist. |
Fuldmagtsservice
Det er muligt at skifte imellem V1 og V2 af fuldmagtsservicen.
Der Det sker i filen cvr-rid.xml på bean digstProcurationService.
| V1 | |
|---|---|
| class (attribute) | dk.sosi.sts.server.service.procuration.ProcurationWebservice |
| endpoint (property) | v1 service endpoint |
| V2 | |
|---|---|
| class (attribute) | dk.sosi.sts.server.service.procuration.ProcurationWebserviceV2 |
| endpoint (property) | v2 service endpoint |
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.
...
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.
| Anchor | ||||
|---|---|---|---|---|
|
Database tabellen sts_audconf.trustedIdpCitizenConfiguration benyttes til konfiguration for issuers af de indgående bootstraptokens:
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
-- Opsætning af krypteringsnøgle for udstederen. Der kan være flere - suffix muliggør flere nøgler INSERT INTO trustedIdpCitizenConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'encryptionKey.1', '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' ); -- Signeringsnøgle til validering af signatur på bootstraptoken - Der kan være flere - suffix muliggør flere nøgler INSERT INTO trustedIdpCitizenConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'signingKey.1', 'MIIGiDCCBLygAwIBAgIUNySjAhoHGRCYk/yn3wsw3wmXBrcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMGsxLTArBgNVBAMMJERlbiBEYW5za2UgU3RhdCBPQ0VTIHVkc3RlZGVuZGUtQ0EgMTETMBEGA1UECwwKVGVzdCAtIGN0aTEYMBYGA1UECgwPRGVuIERhbnNrZSBTdGF0MQswCQYDVQQGEwJESzAeFw0yMTA0MjgxMjI1NDhaFw0yNDA0MjcxMjI1NDdaMIGeMRUwEwYDVQQDDAxGT0NFU19neWxkaWcxNzA1BgNVBAUTLlVJOkRLLU86RzoyMzU1MDEzMi01ZTFmLTRlNDMtYTVmOS0wNDhhY2Y0OWUwYjgxJjAkBgNVBAoMHVRlc3RvcmdhbmlzYXRpb24gbnIuIDk0MzU0OTY5MRcwFQYDVQRhDA5OVFJESy05NDM1NDk2OTELMAkGA1UEBhMCREswggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDDjbGCHjgv+o1q0Q8GcHnLzHG6r4Q4vfuuWHU3Uscjgo6PC55Wj+GAsEnX7Gb8zIcM/kFv87wYR4w14dRO2lc8OO4e6sCzyIJduvu6da8yCBu6qYV708liVTvmTFFTc5O20lmRb0/MnUlyqU+IFcARhsT14M05sNznd1JF+/cfYwyDo+vCRPXa24WbY5GS2kBgnP/YDCUhmjOiDOGKMCgHj/YYvIZJq+2lfB+Lbi3vRXwJRCeI8FUOaVejFY6zDWOz14uELHhbK9Mhm3MV80PzK/MzDs2G60SMv7PGfkjjb3CHYKsDF0IJe59zumn322HAYOtaVSObSxESHhkOCUf6ZgFGoIQCGB7Q94A3UOktdPqgTmyequ+6HYQxPWbb5HxaItWvQ0qMV3jfu9VsH8Jzo+kpVoUVjpEucwmyXMLd22Iihfy6arckFHQFMYRBGB8bPuPGbk9aSlJ+AOQ+MD1foq051loLJb5Sukj3Bp+BtqrE3WAXp5xC+8pmN4szGacCAwEAAaOCAYYwggGCMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUfyif2XGZQuJ159c1di5NCCVtdl4wewYIKwYBBQUHAQEEbzBtMEMGCCsGAQUFBzAChjdodHRwOi8vY2ExLmN0aS1nb3YuZGsvb2Nlcy9pc3N1aW5nLzEvY2FjZXJ0L2lzc3VpbmcuY2VyMCYGCCsGAQUFBzABhhpodHRwOi8vY2ExLmN0aS1nb3YuZGsvb2NzcDAhBgNVHSAEGjAYMAgGBgQAj3oBATAMBgoqgVCBKQEBAQMHMDsGCCsGAQUFBwEDBC8wLTArBggrBgEFBQcLAjAfBgcEAIvsSQECMBSGEmh0dHBzOi8vdWlkLmdvdi5kazBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vY2ExLmN0aS1nb3YuZGsvb2Nlcy9pc3N1aW5nLzEvY3JsL2lzc3VpbmcuY3JsMB0GA1UdDgQWBBSQ2zoWKogKlPFYOToFjHSMufl3ZTAOBgNVHQ8BAf8EBAMCBaAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4IBgQB9sFKk0XIi7AOVjMu5ngVK+KMqnEOe9YGuhW8PBRhaDXi1uVBTm3wpl7CCnPKjPCuJ8sUJxSsES8IZjowuGGRY8RI6Xrf9+gBihL/HHUFowPUSobUJeDiVqZyaQDxVXWRyTwF5R6lQtdX/GJJlrmgW2oEvm4SYGW512EA8DBMWXNfoR0iWGp7taNggMrRj+i3IRiqzfhtslBGA4Rd1t+SRkUJ9lu8JpS+zdQ9MOzfW1YWHeab7nK/k4LkfZTKh2762q4/ez74806OaTqf31Yg56KbPxWHNe0h18gFby0ggIAxhOMS+yAySN5CXcOMigqZt23vtgZjz+RgUVXX3cXrkJhFbhStO2Buh2xHfBT09L5lDfhpLAmC06oWT6xcoJO5EJ2bYCEAV74mwdyWNIkEc2H8AD7SLIxf56Q3MECYGPqyVU2yRKY6iDebTRt+HOeNLyWoZUTO7MXb7IQOhTpsVEZjZd0eiAEw8KbNPGNMwsWQwuf8RzVhildJ/bhPKsAY=' ); INSERT INTO trustedIdpCitizenConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'signingKey.2', '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' ); -- Den anvendte tokenprofil angives (se værdier i tabellen ovenfor) INSERT INTO trustedIdpCitizenConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'tokenProfile.1', 'OIO3BST_CITIZEN' ); -- Gyldige audiences for udsteder INSERT INTO trustedIdpCitizenConfiguration (issuer, attribute, attribute_value) VALUES ( 'https://oio3bst-issuer.dk', 'audience', 'http://audience/clear' ); |
JWT2Idws
Tilsvarende Bst2Idws findes en omveksling fra JSON web token til identity tokens ligeledes målrettet mod borgere.
...
| 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"/> |
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.
| Anchor | ||||
|---|---|---|---|---|
|
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.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES
('http://fmk', 'jwtScope', 'fmk'); |
Tilføjelse af ny anvender
Som beskrevet i den generelle beskrivelse: whitelisting af anvender til borgeromveksling
Anvender skal kende det eksisterende jwtScope.
JWT2OIOSaml
Den generelle konfiguration for denne service ligger i services.xml på bean sboRequestHandler:
...
Ligesom for JWT2Idws, er trust til eksterne idp'er sat op i test-jwt-idp-trust.jks (property trustStoreFile). Se afsnittet om Java keystores.
| Anchor | ||||
|---|---|---|---|---|
|
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.
...
| attributeName | 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) |
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 audience allerede i audienceConfiguration tabellen, skal der oprettes en ny certificate.xxx attribut med ssn for anvendercertifikatet. Anvender skal kende det eksisterende jwtScope.
Opsætning af borgeromvekslinger: Integration til personinformation
Det er indført en integration til personinformation-servicen på NSP ifm. implementation af "subject relations", dvs. claims om at en borger er værge eller har forældremyndigheder ift. en anden borger.
...
| Attribute | Beskrivelse |
|---|---|
| serviceEndpoint | Den URL hvor personinformation kan nås. Default: "http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1" |
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.
SLA logning
Følgende tabel viser STS’ens sla logpunkter samt tilhørende navn. De enkelte logpunkter beskrives i detaljer i det følgende.
...
AbstractStsRequestHandler.request...
Alle forespørgelser, der modtages rammer dette logpunkt....
SecurityTokenService.issueIdCard...
Når et IDKort signeres, vil dette logpunkt blive ramt....
WsOcesCvrRidService.findRelatedCpr...
Ved opslag til CVR-RID tjenesten vil dette logpunkt blive ramt....
WsOcesPidService.isRelated...
Ved opslag til PID tjenesten vil dette logpunkt blive ramt....
ProcurationWebService.getProcurationPrivileges...
Ved opslag til Fuldmagt tjenesten vil dette logpunkt blive ramt....
NboRequestHandler.serialize...
Ved omveksling mellem OIOSaml tokens (NemLogin tokens) til SOSI
idkort vil dette log punkt blive brugt.
...
SignatureProvider.sign...
NboIdwsRequestHandler.convert...
Konfiguration af eHDSI omveksling
| Snitflade | Trust og opsætning |
|---|---|
| eHDSI omveksling | |
| /sts/services/DKNCPBST2EHDSIIdws | Bootstrap token skal være signeret af trusted part (konfigureret i database tabellen sts_ehdsiconf.ehdsiAudienceConfiguration). |
| Anchor | ||||
|---|---|---|---|---|
|
For alle eHDSI omvekslinger gælder det, at de audience, der omveksles til skal være sat op i STS. Dette audience kommer i spil, idet anvendere af denne omveksling angiver, hvilket audience de ønsker billetten udstedt til.
Disse opsætninger sker i tabellen sts_ehdsiconf.ehdsiAudienceConfiguration:
| 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 |
| fuzzyTime | Antal millisekunder tilbage i tid notBefore skal sættes på resulterende token |
| 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. 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) |
| signingKey.xxx | Trusted public key som kan verificere signatur på bootstrap token (en issuer kan have flere nøgler med forskellige xxx navne). |
| validateHOK | Angivelse af om holder-of-key (HoK) validering af requests skal udføres (true, false). |
| allowedDriftInSeconds | Antal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne) |
| whitelistValidation | Om whitelist-checks af anvender certifikater skal være slået til eller fra |
Bemærk: Kombinationen af audience og attribut skal være unik, ellers vil "duplikater" blive ignoreret.
Eksempel: For at konfigurere et nyt audience 'https://audience.nspop.dk/ehdsi' skal følgende SQL udtryk udføres:
| Code Block | ||||
|---|---|---|---|---|
| ||||
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('https://audience.nspop.dk/ehdsi', 'lifetime', '300'); |
Opsætning af policies
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_ehdsiconf.ehdsiPoliciesConfiguration:
| Felt | Beskrivelse |
|---|---|
| audience | Identifikation af audience |
| bst_policy | Indkomne DKNCP Bootstrap token issuance policy |
| sts_policy | Tilhørende issuance policy der skal på et udgående token |
| comment | Valgfri kommentar |
Bemærk: Kombinationen af audience, bst_policy og sts_policy skal være unik, ellers vil "duplikater" blive ignoreret.
Eksempel på at der kan konfigureres to forskellige policies for det indkomne DKNCP Bootstrap token, men det resulterende eHDSI IDWS XUA token får samme issuance policy:
| Code Block |
|---|
INSERT INTO ehdsiPoliciesConfiguration (audience, bst_policy, sts_policy) VALUES ('https://audience.nspop.dk/ehdsi', 'urn:dk:sosi:sts:eHDSI-strict', 'test-ehdsi-sts-policy');
INSERT INTO ehdsiPoliciesConfiguration (audience, bst_policy, sts_policy) VALUES ('https://audience.nspop.dk/ehdsi', 'test-another-ehdsi-bst-policy', 'test-ehdsi-sts-policy'); |
Opsætning af borgeromvekslinger: Integration til personinformation
Omvekslingen benytter servicen PersonInformation til at validere Cpr nummer på det indkomne token.
I den forbindelse er der en integration, som skal have en sat URL til personinformation. Denne konfiguration findes i service.xml på bean personInformationClient:
| serviceEndpoint | Den URL hvor personinformation kan nås. Default: "http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1" |
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.
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. |
Monitoring
STS kan overvåges med 2 endpoints:
/sts/status
/sts/alarm
Status
Status-siden viser en beskrivelse af tilstanden af flere parametre i STS'en.
Siden vil returnere 500 i følgende tilfælde (ellers 200):
- STS'ens eget certifikat er udløbet
- STS'ens eget certifikat er spærret
- Der er ingen forbindelse til STS databasen
- Der er ingen forbindelse til CRA databasen
Alarm
Alarm-siden viser alarmer, hvis der er nogen. Ovenstående scenarier fra status-siden, samt følgende scenarier, vil forårsage en alarm:
- Hvis en spæreliste i CRA er for gammel (NextUpdate er overskredet)
- Hvis et certifikat i databasen eller en keystore er udløbet
- Hvis et certifikat i databasen eller en keystore er spærret
- Hvis XX% antal kald til en eksterne service er fejlet indenfor den sidste YYYY periode (se konfiguration af monitorering)
Der returneres 500 ved alarm, ellers 200.
Konfiguration af monitorering
Alarm-siden kan konfigureres med hvor mange % kald må fejle til en service, inden for X timer.
Timer (for alle eksterne services) angives i services.xml:
| Code Block | ||
|---|---|---|
| ||
<bean id="serviceInfoCollector" class="dk.sosi.sts.ServiceInfoCollector" scope="prototype">
<constructor-arg value="24"/> <!-- Hours to record calls to service -->
</bean> |
Og % tolerancen af fejl for den enkelte service angives i 'interface.xml'.
Her vises konfigurationen for en enkelt service:
| Code Block | ||
|---|---|---|
| ||
<bean id="monitorPidFailureCheck" class="dk.sosi.sts.monitor.ExternalServiceFailureCheck">
<constructor-arg ref="pidService"/>
<constructor-arg value="CPR-PID" />
<constructor-arg value="5" /> <!-- Max % of calls that can fail before it causes an alarm -->
</bean> |
Der findes tre andre ExternalServiceFailureCheck i interface.xml, som konfigureres på samme måde.
Derudover kan man også styre præcist hvilke checks der monitoreres på i de tre status-sider. Dette gøres via listerne "monitorServletList", "statusServletList" og "alarmServletList" i service.xml. Her er et eksempel på listen til status-siden:
| Code Block | ||||
|---|---|---|---|---|
| ||||
<!-- Enabled checks for the status page at '/sts/status' -->
<bean id="statusServletList" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="monitorStatusCheck"/>
<ref bean="monitorCRLCheck"/>
<ref bean="monitorStsDBCheck"/>
<ref bean="monitorCraDBCheck"/>
<ref bean="nboTrustStoreCheck"/>
<ref bean="jwtTrustStoreCheck"/>
<ref bean="monitorCvrRidCheck"/>
<ref bean="monitorPidCheck"/>
<ref bean="monitorDtgProcurationServiceCheck"/>
<ref bean="monitorDigstProcurationServiceCheck"/>
<ref bean="monitorProcurationCheck"/>
<ref bean="monitorUuid2CprCheck"/>
<ref bean="personInformationServiceClient"/>
</list>
</constructor-arg>
</bean> |
Gammel statusside
STS har en ældre statusside, som kan tilgås ved /sts/checkstatus.
Nedenstående er et eksempel på output:
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
Version: 2.8.6-SNAPSHOT
Local time: Tue Jan 04 13:50:45 CET 2022
Started: Tue Jan 04 08:56:47 CET 2022
Last transaction: Tue Jan 04 08:58:23 CET 2022
Last issued: Tue Jan 04 08:58:23 CET 2022
Sts certificate, valid from: Tue Apr 30 11:07:17 CEST 2019
Sts certificate, valid until: Sat Apr 30 11:06:38 CEST 2022
Sts certificate valid: OK
Requests, 24h: 604
Requests, total: 604
Failed requests, 24h: 58
Failed requests, total: 58
Response time, avg 24h: 33 ms
Response time, max 24h: 888 ms
CRL, latest successful download: Tue Jan 04 08:55:51 CET 2022
CRL, latest failed download: never
CPR-RID, latest successful call: Tue Jan 04 08:58:00 CET 2022
CPR-RID, latest failed call: never
CPR-PID, latest successful call: Tue Jan 04 08:58:12 CET 2022
CPR-PID, latest failed call: never
Procuration, latest successful call: Tue Jan 04 08:57:53 CET 2022
Procuration, latest failed call: never
UUID2CPR, latest successful call: Mon May 16 13:25:58 CEST 2022
UUID2CPR, latest failed call: never STS-DB: OK
CRA-DB: OK
Trusted certificate NBOTrustStore/foces3_2024 -> UI:DK-O:G:23550132-5e1f-4e43-a5f9-048acf49e0b8: OK (Expires: 27-04-2024 14:25:47)
Trusted certificate NBOTrustStore/nemlogin_test -> CVR:34051178-FID:56940413: Expired (Expires: 20-04-2020 10:18:26)
Trusted certificate NBOTrustStore/test_voces3_2024 -> UI:DK-O:G:c70b0207-162e-4d3d-a7f1-a19a8e07d99b: OK (Expires: 27-04-2024 13:38:55)
Trusted certificate NBOTrustStore/lakeside_test -> CVR:25450442-FID:bootstrap: Expired (Expires: 24-02-2020 14:55:12)
Trusted certificate NBOTrustStore/sundhed_dk_test -> CVR:31908574-FID:96424869: Expired (Expires: 08-05-2020 08:51:49)
Trusted certificate NBOTrustStore/ssi_foces_2021 -> CVR:46837428-FID:92421325: OK (Expires: 16-08-2024 08:49:11)
Trusted certificate NBOTrustStore/ssi_voces_2021 -> CVR:46837428-UID:27910135: OK (Expires: 16-08-2024 08:47:23)
Trusted certificate JWTTrustStore/revoked -> CVR:30808460-FID:45327473: Ignored (Expires: 16-12-2022 15:33:47)
Trusted certificate JWTTrustStore/mk934ncocn5gwbyvvvegdce6d0ansvlz8dpljbt-0ty -> CVR:33257872-FID:68451797: Expired (Expires: 30-07-2021 07:42:33)
Trusted certificate JWTTrustStore/ssi_foces_2024 -> CVR:46837428-FID:92421325: OK (Expires: 16-08-2024 08:49:11)
Trusted certificate JWTTrustStore/test_foces3_2024 -> UI:DK-O:G:23550132-5e1f-4e43-a5f9-048acf49e0b8: OK (Expires: 27-04-2024 14:25:47)
Trusted certificate JWTTrustStore/expired -> CVR:30808460-FID:50912949: Ignored (Expires: 25-03-2014 21:52:13)
Trusted certificate JWTTrustStore/ssi_foces -> CVR:46837428-FID:92421325: Expired (Expires: 03-09-2018 16:21:07)
Trusted certificate JWTTrustStore/revoked_foces3_2024 -> UI:DK-O:G:730038f6-1662-4a4f-a6e0-1a550347fa2f: Revoked (Expires: 27-04-2024 14:42:14)
Person Information Client, latest successful call: Thu Mar 14 10:41:15 CET 2024
Person Information Client, latest failed call: never
EOS |
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.
Baggrundsjob (Slettejob/Oprydningsjob)
Servicens baggrundsjobs bliver afviklet vha. en udstillede RestControllere, som kaldes vha. simpelt HTTP GET kald.
Driften vedligeholder en cron, som kalder url'er for baggrundsjobbene i et fast mønster vha. curl.
Baggrundsjob i STS findes i selvstændigt modul sts-operations og opsætningen af komponenterne, som bruges af beggrundsjobs, er defineret i henholdsvis operations.xml og sts-operations-servlet.xml.
STS har følgende baggrundsjobs:
STSDeceasedCleanup - Slettejob til sletning af afdødes registreringer i STS cache, hvor der er mapninger mellem CPR numre og UUID, PID og RID.
PersonInformation
Følgende parametre bruges til styringen af forbindelsen til PersonInformation servicen, som bruges på tværs af baggrundsjobs. De kan ændres i operations.properties:
| Nøgle | Default værdi | Beskrivelse |
|---|---|---|
personinformation.url | http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1 | Den url som jobbet skal bruge, når den skal kalde servicen stamdata-personinformation. |
personinformation.error.tolerance | 0 | Tolerance for hvor mange fejl PersonInformation servicen må have inden den melder tilbage at den ikke virker i alarm indikatoren |
personinformation.errorcount.hours | 24 | Angiver, hvor lang en periode i timer, der skal kigges i efter antallet af fejl for PersonInformations alarm indikator |
STSDeceasedCleanup
Baggrundsjobbet kaldes når der skal slettes registreringer for personer der har været erklæret døde det sidste år (deletion.save.deceased)
Kommando til kald af slettejob:
| Code Block | ||||
|---|---|---|---|---|
| ||||
curl <server>/sts-operations/sts-slettejob/deceased/start |
Følgende parametre til styring af STSDeceasedCleanup kan ændres i operations.properties for STS:
| Nøgle | Default værdi | Beskrivelse |
|---|---|---|
deletion.desired.execution.duration.deceased | PT20S | Den tid vi ønsker at bruge på sletning ved hvert request. Tiden er ikke garanteret, da vi kun tjekker mod den efter hver StackOperation er udført. Default værdien er 20 sekunder. |
deletion.save.deceased | P12M | Den tid som skal gå før vi sletter data for en afdød person. Dette gøres så vi ikke sletter data, hvis personens status ændres til afdød og derefter tilbage til levende. |
deletion.batchsize.deceased | 1000 | Max. antal entries (f.eks. CPR) vi behandler pr. batch |
personinformation.batchsize.deceased | 100 | Max. antal CPR vi forespørger på i en enkelt request til personinformation |
Der er en max grænse for hvor lang tid jobbet må køre pr. gang (deletion.desired.execution.duration.deceased) og det kan angives her. Når jobbet har kørt den tid der er angivet, så stopper udførslen. Her efter kan jobbet kaldes igen og den vil fortsætte med processeringen, hvor jobbet stoppede sidst.
Parameteren angives som en Duration i ISO-8601 format. Dvs. eksemplet viser 20 sekunder.
Status og alarm endpoints
Kommando til kald af slette job status og alarm:
| Code Block | ||||
|---|---|---|---|---|
| ||||
curl <server>/sts-operations/sts-slettejob/status
curl <server>/sts-operations/sts-slettejob/alarm |
Status kaldet verificerer databaseadgang. Der kan returneres følgende fra statussnitfladen:
200: Der er adgang til databasen og jobbet kan anvendes.
5xx: Komponenten melder at den ikke kan anvendes.
| Code Block | ||
|---|---|---|
| ||
HTTP/1.1 200 OK
{ "Database":"OK" } |
Alarm kaldet verificerer services, eksterne kald og databaseadgange. Denne service indeholder kun data, hvis der er alarmer.
200: Komponenten fungerer og der er ingen alarmer.
5xx: Komponenten melder at den ikke kan anvendes.
Følgende er et ekempel på et svar, hvor personinformationservice ikke er tilgængelig.
| Code Block | ||
|---|---|---|
| ||
HTTP/1.1 500 Internal Server Error
Baggrundsjobbet StackedOperationsService fejlede sidst det blev kørt. Problemet var: Person information service kaldet returnerede status 404.
Person Information servicen har fejlet flere gange end tilladt i en given periode |
Monitoring
STS kan overvåges med 2 endpoints:
/sts/status
/sts/alarm
Status
Status-siden viser en beskrivelse af tilstanden af flere parametre i STS'en.
Siden vil returnere 500 i følgende tilfælde (ellers 200):
- STS'ens eget certifikat er udløbet
- STS'ens eget certifikat er spærret
- Der er ingen forbindelse til STS databasen
- Der er ingen forbindelse til CRA databasen
Alarm
Alarm-siden viser alarmer, hvis der er nogen. Ovenstående scenarier fra status-siden, samt følgende scenarier, vil forårsage en alarm:
- Hvis en spæreliste i CRA er for gammel (NextUpdate er overskredet)
- Hvis et certifikat i databasen eller en keystore er udløbet
- Hvis et certifikat i databasen eller en keystore er spærret
- Hvis XX% antal kald til en eksterne service er fejlet indenfor den sidste YYYY periode (se konfiguration af monitorering)
Der returneres 500 ved alarm, ellers 200.
Konfiguration af monitorering
Alarm-siden kan konfigureres med hvor mange % kald må fejle til en service, inden for X timer.
Timer (for alle eksterne services) angives i services.xml:
| Code Block | ||
|---|---|---|
| ||
<bean id="serviceInfoCollector" class="dk.sosi.sts.ServiceInfoCollector" scope="prototype">
<constructor-arg value="24"/> <!-- Hours to record calls to service -->
</bean> |
Og % tolerancen af fejl for den enkelte service angives i 'interface.xml'.
Her vises konfigurationen for en enkelt service:
| Code Block | ||
|---|---|---|
| ||
<bean id="monitorPidFailureCheck" class="dk.sosi.sts.monitor.ExternalServiceFailureCheck">
<constructor-arg ref="pidService"/>
<constructor-arg value="CPR-PID" />
<constructor-arg value="5" /> <!-- Max % of calls that can fail before it causes an alarm -->
</bean> |
Der findes tre andre ExternalServiceFailureCheck i interface.xml, som konfigureres på samme måde.
Derudover kan man også styre præcist hvilke checks der monitoreres på i de tre status-sider. Dette gøres via listerne "monitorServletList", "statusServletList" og "alarmServletList" i service.xml. Her er et eksempel på listen til status-siden:
| Code Block | ||||
|---|---|---|---|---|
| ||||
<!-- Enabled checks for the status page at '/sts/status' -->
<bean id="statusServletList" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="monitorStatusCheck"/>
<ref bean="monitorCRLCheck"/>
<ref bean="monitorStsDBCheck"/>
<ref bean="monitorCraDBCheck"/>
<ref bean="nboTrustStoreCheck"/>
<ref bean="jwtTrustStoreCheck"/>
<ref bean="monitorCvrRidCheck"/>
<ref bean="monitorPidCheck"/>
<ref bean="monitorDtgProcurationServiceCheck"/>
<ref bean="monitorDigstProcurationServiceCheck"/>
<ref bean="monitorProcurationCheck"/>
<ref bean="monitorUuid2CprCheck"/>
<ref bean="personInformationServiceClient"/>
</list>
</constructor-arg>
</bean> |
Gammel statusside
STS har en ældre statusside, som kan tilgås ved /sts/checkstatus.
Nedenstående er et eksempel på output:
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
Version: 2.8.6-SNAPSHOT
Local time: Tue Jan 04 13:50:45 CET 2022
Started: Tue Jan 04 08:56:47 CET 2022
Last transaction: Tue Jan 04 08:58:23 CET 2022
Last issued: Tue Jan 04 08:58:23 CET 2022
Sts certificate, valid from: Tue Apr 30 11:07:17 CEST 2019
Sts certificate, valid until: Sat Apr 30 11:06:38 CEST 2022
Sts certificate valid: OK
Requests, 24h: 604
Requests, total: 604
Failed requests, 24h: 58
Failed requests, total: 58
Response time, avg 24h: 33 ms
Response time, max 24h: 888 ms
CRL, latest successful download: Tue Jan 04 08:55:51 CET 2022
CRL, latest failed download: never
CPR-RID, latest successful call: Tue Jan 04 08:58:00 CET 2022
CPR-RID, latest failed call: never
CPR-PID, latest successful call: Tue Jan 04 08:58:12 CET 2022
CPR-PID, latest failed call: never
Procuration, latest successful call: Tue Jan 04 08:57:53 CET 2022
Procuration, latest failed call: never
UUID2CPR, latest successful call: Mon May 16 13:25:58 CEST 2022
UUID2CPR, latest failed call: never STS-DB: OK
CRA-DB: OK
Trusted certificate NBOTrustStore/foces3_2024 -> UI:DK-O:G:23550132-5e1f-4e43-a5f9-048acf49e0b8: OK (Expires: 27-04-2024 14:25:47)
Trusted certificate NBOTrustStore/nemlogin_test -> CVR:34051178-FID:56940413: Expired (Expires: 20-04-2020 10:18:26)
Trusted certificate NBOTrustStore/test_voces3_2024 -> UI:DK-O:G:c70b0207-162e-4d3d-a7f1-a19a8e07d99b: OK (Expires: 27-04-2024 13:38:55)
Trusted certificate NBOTrustStore/lakeside_test -> CVR:25450442-FID:bootstrap: Expired (Expires: 24-02-2020 14:55:12)
Trusted certificate NBOTrustStore/sundhed_dk_test -> CVR:31908574-FID:96424869: Expired (Expires: 08-05-2020 08:51:49)
Trusted certificate NBOTrustStore/ssi_foces_2021 -> CVR:46837428-FID:92421325: OK (Expires: 16-08-2024 08:49:11)
Trusted certificate NBOTrustStore/ssi_voces_2021 -> CVR:46837428-UID:27910135: OK (Expires: 16-08-2024 08:47:23)
Trusted certificate JWTTrustStore/revoked -> CVR:30808460-FID:45327473: Ignored (Expires: 16-12-2022 15:33:47)
Trusted certificate JWTTrustStore/mk934ncocn5gwbyvvvegdce6d0ansvlz8dpljbt-0ty -> CVR:33257872-FID:68451797: Expired (Expires: 30-07-2021 07:42:33)
Trusted certificate JWTTrustStore/ssi_foces_2024 -> CVR:46837428-FID:92421325: OK (Expires: 16-08-2024 08:49:11)
Trusted certificate JWTTrustStore/test_foces3_2024 -> UI:DK-O:G:23550132-5e1f-4e43-a5f9-048acf49e0b8: OK (Expires: 27-04-2024 14:25:47)
Trusted certificate JWTTrustStore/expired -> CVR:30808460-FID:50912949: Ignored (Expires: 25-03-2014 21:52:13)
Trusted certificate JWTTrustStore/ssi_foces -> CVR:46837428-FID:92421325: Expired (Expires: 03-09-2018 16:21:07)
Trusted certificate JWTTrustStore/revoked_foces3_2024 -> UI:DK-O:G:730038f6-1662-4a4f-a6e0-1a550347fa2f: Revoked (Expires: 27-04-2024 14:42:14)
Person Information Client, latest successful call: Thu Mar 14 10:41:15 CET 2024
Person Information Client, latest failed call: never
EOS |
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)
...
. |
Genstart
Servicen kan genstartes ved at genstarte den docker container, som servicen den kører i.
...