Versions Compared

Key

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

...

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

...

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
SnitfladeAnvendersystemBrugerTrustModtager
DGWS

/sts/services/SecurityTokenService

/sts/services/NewSecurityTokenService

Alle som har netværksmæssig adgangSystem eller medarbejderIndgående id-kort skal være signeret af "brugeren selv".Alle DGWS-services
Medarbejderomveksling
/sts/services/Sosi2OIOSamlAlle som har netværksmæssig adgangAlle medarbejdereId-kort skal være signeret af STS (udstedt af /NewSecurityTokenService)

Modtager-system skal være konfigureret (i tabellen iboConfig).

/sts/services/OIOSaml2Sosi

Alle som har netværksmæssig adgang.

Hele SOAP besked skal være signeret med et vilkårligt OCES2-certifikat.

Alle medarbejdere

OIOSaml assertion skal være signeret af trusted part (i test-new-nemLogin-idp.keystore).

I praksis NemLog-In
Alle DGWS-services
/sts/services/BST2SOSIAlle som har netværksmæssig adgangAlle medarbejdere

Bootstrap token skal være signeret af trusted part (konfigureret i database tabellen sts_audconf.trustedIdpConfiguration).

Lokal IdP, SEB eller NemLog-in

Alle DGWS-servicesAlle DGWS-services
Borgeromveksling


/stsBorgeromveksling/sts/services/Bst2Idws

Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration).

Dele af SOAP besked skal være signeret med denne nøgle.

Alle borgere

Bootstrap token skal være signeret af trusted part (konfigureret i database tabellen sts_audconf.trustedIdpCitizenConfiguration).

I praksis NemLog-In eller SEB
Modtager-system skal være konfigureret (i tabellen audienceConfiguration).
/sts/services/JWTIdws

Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration).

Dele af SOAP besked skal være signeret med denne nøgle.

Alle borgere

JWT Modtager-system skal være signeret af trusted part (i test-jwt-idp-trust.jks). kid skal pege på det rigtige alias i denne.

Issuer skal være konfigureret i services.xml

Modtager-system skal være konfigureret (i tabellen audienceConfiguration).

konfigureret (i tabellen audienceConfiguration).

JWT suport skal være aktiveret JWT suport skal være aktiveret (i tabellen audienceConfiguration)

/sts/services/JWT2OIOSaml

Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration).

Dele af SOAP besked skal være signeret med denne nøgle.

Alle borgere

Modtager-system skal være konfigureret (i tabellen audienceConfiguration).

JWT suport skal være aktiveret (i tabellen audienceConfiguration)

Selve konfiguration i forhold til de enkelte snitflader er beskrevet nedenfor.

...

DGWS snitfladerne dækker de to omvekslingsservices i tabellen nedenfor. I forhold til opsætning og konfiguration er de to snitflader ens, hvorfor de behandles samlet i det følgende.

SnitfladeTrust og konfiguration
DGWS

/sts/services/SecurityTokenService

/sts/services/NewSecurityTokenService

  • Indgående Idkort skal være signeret af anvendersystemet med certifikat.
  • Certifikatets (anvendersystemets) CVR nummer skal være whitelistet i STS

Trustmodellen for DGWS er baseret på, at anvenderen signerer det indgådende Idkort idkort ved anvendelse af et certifikat udstedt af CA rodcertifikat 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.

Derudover indeholder STS databasen tabellen sts_audconf.trustedCvr, som indeholder de CVR numre, der er whitelistet i STS:

FeltBeskrivelsePåkrævet
cvrCVR nummre for af anvender.Ja
endpointDen service, der whitelistes.Ja

Opsætning af nyt anvendersystem

...

Code Block
languagesql
titleWhitelisting af CVR nummer
USE sts_audconf;

insert into trustedCvr (cvr, endpoint) values ('46837428', 'STS');

...

Trustmodellen og opsætningen for de enkelte snitflader er opsummeret i nedenstående tabel og uddybet i de underliggende afsnit:

SnitfladeTrust og opsætning
Medarbejderomveksling
/sts/services/Sosi2OIOSaml
  • Det indkommende
Idkort
  • 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
  • - 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:

PropertyBeskrivelse
validateEnvelopeSignatureOm envelope signaturen på requests skal valideres
checkTargetCertificateOm gyldigheden af certifikat svarende til publicKey (i nedenstående tabel) skal tjekkes før den benyttes
emptyAttributeValueVærdi, der skal bruges til at erstatte tomme attributter på den genererede OIO Saml Assertion

...

FeltBeskrivelsePåkrævet
audienceidentifikation Identifikation af modtagersystemet som en URI, der skal være på normalform.Ja
publicKeyden Den offentlige nøgle som anvendes til kryptering af den omvekslede token. Bemærk at indholdet er tilgivende overfor tilgivende overfor line-breaks og whitespaces, så der kan formateres valgfrit.Ja
recipientURLden Den URL hvor modtagersystemet kan nåes på.Ja
includeBSTom ID-kortOm idkort/bootstrap token skal inkluderes i den svarede assertion. (ja/nej)Ja
deliveryNotOnOrAfterOffsetoffset Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstede assertion.Ja
notBeforeOffsetoffset Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstede assertion.Ja
notOnOrAfterOffsetoffset Offset i tid fra omvekslingstidspunkt, der bruges til opsætning af gyldighed af udstede assertion.Ja
idCardMaxAgeMinsmaksimal Maksimal alder på id-kortetNej (default er 1440 min)

Tilføjelse af nyt audience

Tilføjelse af ny anvender

Ovenstående tabel skal kun opdateres hvis servicen skal benyttes for et audience, der ikke allerede er konfigureret. I så fald, tilføjes en ny række i tabellen for det nye audience.

...

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

Tilføjelse af ny anvender

Ovenstående tabel skal kun opdateres hvis servicen skal benyttes for et audience, der ikke allerede er konfigureret. I så fald, tilføjes en ny række i tabellen for det nye audience.

OIOSaml2Sosi

Den generelle konfiguration for denne service ligger i services.xml på bean nboConfiguration:

PropertyBeskrivelse
fuzzyTimeAntal millisekunder tilbage i tid createdDate skal sættes på resulterende idkort
idCardDurationAntal millisekunder det resulterende idkort er gyldigt
allowedDriftInSecondsAntal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne)
trustedVaultKeystore med trusted eksterne idp'er
cprTrustCertificatesSubjectSerialNumber 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.

Tilføjelse af ny anvender

BST2SOSI

Den generelle konfiguration for denne service ligger i services.xml på bean nboConfigurationBST2SOSIRequestHandler:

er gyldigt
PropertyBeskrivelse
allowedDriftInSecondsAntal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne)
allowedAudienceGyldigt audience i indgående bootstraptoken
fuzzyTimeAntal millisekunder tilbage i tid createdDate skal sættes på resulterende idkort
idCardDurationAntal millisekunder det resulterende idkort
allowedDriftInSecondsAntal sekunder tidsbegrænsninger i indgående token må afvige med. (NotBefore, NotOnOrAfter attributterne)
trustedVaultKeystore med trusted eksterne idp'er
cprTrustCertificatesSubjectSerialNumber 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 anvender

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:

...

Omvekslingen kræver også konfiguration for hver issuer i databasen i tabellen sts_audconf.trustedIdpConfiguration:

...

Gyldige attributter i tabellen er:

...

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.

...

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)

...

er gyldigt
whitelistValidationOm whitelist-checks af anvender certifikater skal være slået til eller fra


Omvekslingen kræver også konfiguration for hver issuer i databasen i tabellen sts_audconf.trustedIdpConfiguration:

FeltBeskrivelse
issuerIdentifikation på udstederen af bootstraptokens
attributeAttribut navn
attribute_valueAttribut værdi
commentValgfri kommentar - specielt brugbart til whitelist indgange uden identifikation af organisationen

Gyldige attributter i tabellen er:

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

tokenProfileAnvendt tokenprofil. OIOH3BST (lokal IdP udstedt), OIOH2BST (SEB udstedt) eller OIO3BST (NemLog-in3 STS udstedt).
validateHOKAngivelse af om holder-of-key (HoK) validering af requests skal udføres (true, false)
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)

signingKey.xxxNøgle til trusted certifikat til signering af BST tokenet (en issuer kan have flere trusted certifikater med forskellige xxx navne).

Tilføjelse af ny anvender

Er der tale om en ny issuer, skal der tilføjes rækker til ovenfor nævnte tabel for hver attribut. 

Er issuer allerede i tabellen, skal der oprettes:

  • Evt. en ny encryptionKey.xxx attribut med krypteringsnøglen (hvis den ikke allerede er til stede).
  • En ny certificate.xxx attribut med ssn for anvendercertifikatet
  • En ny signingKey.xxx attribut med nøglen til certifikatet der bruges til signering af bootstraptokenet (hvis det ikke allerede er til stede).

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

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

Eksempel-SQL:

Code Block
languagesql
use sts_audconf;
insert into roleDefinitions (source, externalName, code, value) values ('NationalFederation', 'nspPlejeAssR3', '41003', 'PlejeAssR3');

Trust af nationale roller

Nationale roller som beskrevet ovenfor valideres som udgangspunkt mod de roller der fremfindes i SEB. Det er dog muligt at tillade enkelte udvalgte cvr-numre (f.eks. regioner) at angive roller i id-kortet 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.
endpointDet endpoint hvortil funktionaliteten kan benyttes. Mulige værdier er 'STS' (svarende til SecurityTokenService) og 'NBO' (svarende til OIOSaml2Sosi)

Af sikkerhedsmæssige årsager anbefales funktionaliteten pt kun benyttes for 'STS'.

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

Bst2Idws

Omveksling fra Bootstrap token til identitytoken

Tilføjelse af ny anvender

Er der tale om en ny issuer, skal der tilføjes rækker til ovenfor nævnte tabel for hver attribut. 

Er issuer allerede i tabellen, skal der oprettes:

  • Evt. en ny encryptionKey.xxx attribut med krypteringsnøglen (hvis den ikke allerede er til stede).
  • En ny certificate.xxx attribut med ssn for anvendercertifikatet
  • En ny signingKey.xxx attribut med nøglen til certifikatet der bruges til signering af bootstraptokenet (hvis det ikke allerede er til stede).

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

...

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:

Code Block
languagesql
use sts_audconf;
insert into roleDefinitions (source, externalName, code, value) values ('NationalFederation', 'nspPlejeAssR3', '41003', 'PlejeAssR3');

Trust af nationale roller

Nationale roller som beskrevet ovenfor valideres som udgangspunkt mod de roller der fremfindes i SEB. Det er dog muligt at tillade enkelte udvalgte cvr-numre (f.eks. regioner) at angive roller i id-kortet uden at få disse valideret via SEB. Dette styres via tabellen sts_audconf.trustedCvr.

...

Af sikkerhedsmæssige årsager anbefales funktionaliteten pt kun benyttes for 'STS'.

Konfiguration af borgeromvekslinger

Bst2Idws

Omveksling fra Bootstrap token til identitytoken (også tidligere kaldet webapotek løsning) benyttes til at veksle et Bootstraptoken udstedet af NemLog-in på vegne af en borger, til et identitytoken, der kan benyttes til login i FMK-online (og senere formentlig også MinLog2 og Fælles stamkort)og til borgersnitflader (IDWS snitflader) udbudt af f.eks. 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.

...