Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
outlinetrue

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.

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.

Oversigt over snitflader og adgang

Følgende er en oversigt over STS snitflader.

...

SnitfladeAnvenderkravSærlige opsætningstilfældeModtager
DGWS

/sts/services/SecurityTokenService

/sts/services/NewSecurityTokenService

Alle som har netværksmæssig adgang


Alle DGWS-services
Medarbejderomveksling
/sts/services/Sosi2OIOSamlAlle 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.

NavnKort beskrivelseKommentarer
teststs-1.keystoreSTS keystoreFil baseret keystore der indeholder STS eget certifikat. Benyttes kun i test-miljøer uden LUNA integration
testtdc.keystoreTruststore 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.jksKeystore 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.keystoreTruststore til NBO og borger billetomvekslingIndeholder de idp'er (primært nemlogin) vi stoler på som udstedere af de billetter vi omveksler.
test-jwt-idp-trust.jksTruststore til JWT billetomvekslingIndeholder de idp'er (primært nemlogin) vi stoler på som udstedere af de billetter vi omveksler. STS-2.5.3

Anchor
KeystoreTestNewNemLoginIdp
KeystoreTestNewNemLoginIdp
Konfiguration af test-new-nemLogin-idp.keystore

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

  1. Modtag offentlig nøgle fra den eksterne part.
  2. Verificer at nøglen tilhører det rigtige miljø (test vs produktion) - og er et gyldigt FOCES certifikat
  3. Indsæt nøglen under et vilkårligt alias i test-new-nemLogin-idp.keystore
  4. Ændringen kræver genstart af STS (eller wildfly).

Fornyelse af certifikat for ekstern idp

  1. Tilføj det nye certifikat ifølge proceduren for oprettelse af ny idp - så både gammelt og nyt certifikat eksisterer samtidig.
  2. Når det gamle certifikat ikke bruges mere kan dette efterfølgende fjernes ved førstkommende lejlighed.

Anchor
KeystoreTestJwtIdpTrust
KeystoreTestJwtIdpTrust
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å.

...

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.

  1. Modtag offentlig nøgle fra den eksterne part.
  2. Modtag information om hvilket kid der angives i det indgående JWT (key identifier der benyttes af den eksterne part).
  3. Verificer at nøglen tilhører det rigtige miljø (test vs produktion) - og er et gyldigt FOCES certifikat
  4. Indsæt nøglen under et alias svarende til det angivne kid i /pack/sts/test-jwt-idp-trust.jks
  5. Æ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.

...

Code Block
languagexml
<bean id="httpCodeForFaultResponse" class="java.lang.Integer">
    <constructor-arg value="400200"/>
</bean>


Konfiguration af DGWS
Anchor
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 vedligeholdes som en del af SEAL.JAVA biblioteket og skal derfor ikke konfigureres særskilt i STS.

Anchor
DgwsNationaleRoller
DgwsNationaleRoller
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.

...

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

FeltBeskrivelse
sourceKan benyttes til at identificere hvor de konkrete roller ligger. Pt. er eneste benyttede værdi 'NationalFederation'
externalNameDet navn hvorunder rollen optræder i den eksterne kilde (SEB brugerkataloget) , f.eks. 'nspLaegesekretaer'
codeDen kode der indgår i id-kortet, f.eks. 40001
valueDen 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
languagesql
use sts_audconf;
insert into roleDefinitions (source, externalName, code, value) values ('NationalFederation', 'nspPlejeAssR3', '41003', 'PlejeAssR3');

Anchor
TrustNationaleRoller
TrustNationaleRoller
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.

FeltBeskrivelse
cvrEt cvr nummer der tillades adgang uden validering af nationale roller.
endpoint

Det endpoint hvortil funktionaliteten kan benyttes. Mulige værdier er

  • 'STS' (svarende til SecurityTokenService dvs DGWS) og
  • 'NBO' (svarende til OIOSaml2Sosi)
  • 'BST2SOSI' (svarende til omveksling af Bootstrap token til DGWS)

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.

...

SnitfladeTrust og opsætning
Medarbejderomveksling
/sts/services/Sosi2OIOSaml
  • Det indkommende idkort skal være signeret af STS selv (udstedt af /NewSecurityTokenService)
  • Der skal være konfigureret et audience, der matcher det, som anvenderen angiver i requestet.
/sts/services/OIOSaml2Sosi
  • OIOSaml assertion skal være signeret af trusted part (i test-new-nemLogin-idp.keystore) - i praksis NemLog-In
/sts/services/BST2SOSI
  • Bootstrap token skal være signeret af trusted part (konfigureret i database tabellen sts_audconf.trustedIdpConfiguration). Lokal IdP, SEB eller NemLog-in

Opsætning af Sosi2OIOSaml

Den generelle konfiguration for denne service ligger i services.xml på bean iboRequestHandler og består af følgende:

...

FeltBeskrivelsePåkrævet
audienceIdentifikation af modtagersystemet som en URI, der skal være på normalform.Ja
publicKeyDen 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
recipientURLDen URL hvor modtagersystemet kan nås på.Ja
includeBSTOm idkort/bootstrap token skal inkluderes i den udstedte assertion. (ja/nej)Ja
deliveryNotOnOrAfterOffsetOffset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion.Ja
notBeforeOffsetOffset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion.Ja
notOnOrAfterOffsetOffset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstedte assertion.Ja
idCardMaxAgeMinsMaksimal alder på id-kortet Nej (default er 1440 min)

Anchor
MedarbejderAudienceIboConfig
MedarbejderAudienceIboConfig
Opsætning: Tilføjelse af nyt modtagersystem

Der kan tilføjes nye audience ved indsættelse af en ny række i tabellen iboConfig.

...

Code Block
titleKonfiguration af nyt audience
collapsetrue
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:

...

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

...

Code Block
languagesql
titleOpsætning af ny udsteder af bootstrap token
collapsetrue
-- 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
BST2SosiNyAnvender
BST2SosiNyAnvender
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.

...

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

...

Code Block
languagesql
titleOpsætning af whitelisting af anvendere
collapsetrue
-- 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

SnitfladeTrust 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
BorgeromvekslingerKonfigurationAudience
BorgeromvekslingerKonfigurationAudience
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.

...

Code Block
languagesql
titleTilføjelse af audience
INSERT INTO audienceConfiguration (audience, attribute, attribute_value) VALUES ('https://fmk', 'lifetime', '300');

Anchor
BorgeromvekslingerKonfigurationAudience
BorgeromvekslingerKonfigurationAudience
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":

...

URL til IDSAS sættes i idsas.xml.

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

...

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

...

Code Block
languagesql
titleTilføjelse af ny anvender
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
languagesql
titleTilføjelse af ny anvender
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");

Fuldmagtsservice

Det er muligt at skifte imellem V1 og V2 af fuldmagtsservicen.

...

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
Bst2IdwsNyUdsteder
Bst2IdwsNyUdsteder
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:

...

Code Block
languagesql
titleBst2Idws: Tilføjelse af udsteder af bootstrap token
collapsetrue
-- 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',
   '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'
);

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.

...

PropertyBeskrivelse
fuzzyTimeAntal millisekunder tilbage i tid notBefore skal sættes på resulterende token
allowedDriftInSecondsAntal sekunder tidsbegrænsninger i indgående token må afvige med
trustStoreFileSti til keystore med trusted eksterne idp'er
trustStorePasswordPassword til keystore
issuerStrategiesListe 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
KonfigurationAudienceJwt2Idws
KonfigurationAudienceJwt2Idws
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.

...

Code Block
languagesql
titleJWT konfiguration for audience
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:

PropertyBeskrivelse
checkTargetCertificateOm gyldigheden af certifikat svarende til publicKey (i nedenstående tabel) skal tjekkes før den benyttes
fuzzyTimeAntal millisekunder tilbage i tid notBefore skal sættes på resulterende token
allowedDriftInSecondsAntal sekunder tidsbegrænsninger i indgående token må afvige med
trustStoreFileSti til keystore med trusted eksterne idp'er
trustStorePasswordPassword til keystore
issuerStrategiesListe 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.

Anchor
AudienceJwt2OioSaml
AudienceJwt2OioSaml
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.

...

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

publicKeyDen 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.
recipientURLDen URL hvor modtagersystemet kan nåes på.
includeBSTOm 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.

I den forbindelse er der en integration, som skal have en sat URL til personinformation. Denne konfiguration findes i service.xml på bean personInformationClient:

AttributeBeskrivelse
serviceEndpoint

Den URL hvor personinformation kan nås.

Default: "http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1"

Konfiguration af eHDSI omveksling

SnitfladeTrust 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
KonfigurationAudienceDKNCPBST2EHDSIIDWS
KonfigurationAudienceDKNCPBST2EHDSIIDWS
Opsætning af audience

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.

...

attributeBeskrivelse
lifetimeAngiver gyldighed af det udstedte token, f.eks. 3600 (s). Tilstedeværelsen af denne "aktiverer" det givne audience
fuzzyTimeAntal 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

...

Code Block
languagesql
titleTilføjelse af audience
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.

...

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.

IDNavnBeskrivelse
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
idkort vil dette log punkt blive brugt.
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
280BST2SOSIRequestHandler.convertVed 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.

...

  • 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:

...

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.

...

Code Block
languagexml
titlestatusServletList
<!-- 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.

...

Certifikater, der er på ignorelisten vil optræde i output, men deres faktiske status vil ikke påvirke den samlede status rapporteret i endpointet.


Genstart

Servicen kan genstartes ved at genstarte den docker container, som servicen den kører i.  

...