Page History
...
STS afhænger af en række eksterne komponenter i forbindelse med udstedelse af og omveksling af billetter. Afhængigheder i parentes anvendes kun i visse scenarier:
| Afhængighed | Beskrivelse | SecurityTokenService | OIOSaml2Sosi | Sosi2OIOSaml | Bst2Idws | BST2SOSI | Jwt2Idws |
|---|---|---|---|---|---|---|---|
| CRA | Spærrelister tilgængelige på NSP platformen, indlæst via et baggrundsjob | X | X | X | X | X | |
| Krydscertifikater | Hentes via HTTP fra internettet | X | X | X | X | X | |
| STS database | Konfiguration og lokal cache af CPR | X | X | X | X | X | |
| STS keystore | Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fra | X | X | X | X | X | |
| Autorisationer | Indlæses fra autorisationsregister | X | X | X | |||
| Nationale roller (SEB) | X | X | X | ||||
| RID2CPR | Verifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager | (X) | (X) | (X) | |||
| UUID2CPR | Verifikation af medarbejderes CPR nr. Hentes fra internet fra central traffic manager | (X) | |||||
| PID2CPR | Verifikation af borgeres CPR nr. Hentes fra internet fra central traffic manager | X | |||||
| Fuldmagtsservice V1 | Verifikation om fuldmagt til at agere på vegne af anden borger Benyttes ikke, men kan konfigureres til at erstatte Fuldmagtsservice V2. | ||||||
| Fuldmagtsservice V2 | Verifikation om fuldmagt til at agere på vegne af anden borger | (X) | |||||
| IDSAS | Sløring af sundhedsfaglig over for et CPR-NR samt afdelingssløring (over for alle borgere). | (X) | (X) | ||||
| Personinformation | Intern service til henting af stamdata | (X) | (X) |
| HTML |
|---|
<iframe src="https://archi.nspop.dk/NSP/570928ca/views/id-24e0d66c.html" name="test" height="730" width="800">You need a Frames Capable browser to view this content.</iframe> |
...
| 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. |
| Snitflade | Snitflade | Anvendersystem | Bruger | Tokens | Trust | Modtager |
|---|---|---|---|---|---|---|
/sts/services/SecurityTokenService /sts/services/NewSecurityTokenService | WS-Trust 1.2 (DGWS) | Alle som har netværksmæssig adgang | System eller medarbejder | Input: Selvsigneret id-kort Output: STS signeret id-kort | Indgående id-kort skal være signeret af "brugeren selv". | Alle DGWS-services |
| /sts/services/OIOSaml2Sosi | WS-Trust 1.4 (OIO-IDWS 1.0) | Alle som har netværksmæssig adgang. Dele af SOAP besked skal være signeret med system-certifikat | Alle medarbejdere | Input: OIO-Saml assertion Output: STS signeret id-kort | OIOSaml assertion skal være signeret af trusted part. | Alle DGWS-services |
| /sts/services/Sosi2OIOSaml | WS-Trust 1.4 (OIO-IDWS 1.0) | Alle som har netværksmæssig adgang Dele af SOAP besked kan være signeret med system-certifikat (verificeres ikke pga DCC/Gateway) | Alle medarbejdere | Input: STS signeret id-kort Output: OIO-Saml assertion | Id-kort skal være signeret af STS (udstedt af /NewSecurityTokenService) | Modtager-system skal være konfigureret (i tabellen iboConfig). |
| /sts/services/BST2SOSI | WS-Trust 1.4 (OIO-IDWS 1.0) | Alle som har netværksmæssig adgang | Alle medarbejdere | Input: OIO-Saml bootstrap token Output: STS signeret id-kort | Bootstrap token skal være signeret af trusted part. Lokal IdP eller SEB | Alle DGWS-services |
| /sts/services/Bst2Idws | WS-Trust 1.4 (OIO-IDWS 1.0) | Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration). Dele af SOAP besked skal være signeret med denne nøgle. | Alleborgere | Input: OIO-Saml bootstrap token Output: IDWS (1.0) token. | Bootstrap token skal være signeret af trusted part. I praksis SEB | Modtager-system skal være konfigureret (i tabellen audienceConfiguration). |
| /sts/services/JWTIdws | WS-Trust 1.4 (OIO-IDWS 1.0) | Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration). Dele af SOAP besked skal være signeret med denne nøgle. | Alleborgere | Input: JWTsigneretafOpenId connector Output: IDWS (1.0) token. | JWT skal være signeret af trusted part (i test-jwt-idp-trust.jks). kid skal pege på det rigtige alias i denne. Issuer skal være konfigureret i services.xml | Modtager-system skal være konfigureret (i tabellen audienceConfiguration). JWT suport skal være aktiveret (i tabellen audienceConfiguration) |
| /sts/services/JWT2OIOSaml | WS-Trust 1.4 (OIO-IDWS 1.0) | Offentlig nøgle for anvender-system skal være WL (i tabellen audienceConfiguration). Dele af SOAP besked skal være signeret med denne nøgle. | Alleborgere | Input: JWTsigneretafOpenId connector Output: OIO-Saml assertion | JWT skal være signeret af trusted part (i test-jwt-idp-trust.jks). kid skal pege på det rigtige alias i denne. Issuer skal være konfigureret i services.xml | Modtager-system skal være konfigureret (i tabellen audienceConfiguration). JWT suport skal være aktiveret (i tabellen audienceConfiguration) |
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 2: STS-afhængigheder og eksterne snitflader
- NewSecurityTokenService -- Udstedelse af STS-signeret id-kort. Erstatter samtidig NameId til et kanonisk format (nødvendigt hvis id-kortet skal veksles til OIOSaml). SOSI Seal biblioteket benyttes af STS til serialisering/deserialisering af web service kaldet samt signering af udstedte ID-kort.
- SecurityTokenService -- Legacy udgave af ovennævnte service (uden erstatning af NameId). Benyt NewSecurityTokenService hvis muligt.
- Sosi2OIOSaml -- Ombytter STS-signeret id-kort fra SOSI ID-kort til OIOSAML assertion rettet mod et specifikt audience, f.eks. sundhed.dk. Bemærk at dette id-kort skal være udstedt af NewSecurityTokenService.
- OIOSaml2Sosi -- Ombytter OIOSaml token til signeret id-kort. Token skal være signeret af troværdig tredjepart.
- Bst2Idws -- Ombytter OIOSaml bootstrap token til signeret identitytoken rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart.
- JWT2Idws -- Ombytter JSON Web token til signeret identity-token rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (pt. en OID connector).
Komponentsnitflader
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 6: Komponent-interfaces i STS
| Code Block |
|---|
OcesCrlService |
Check af OCES-spærrelistecheck:
- isRevoked: Checker om et X509-certifikat er spærret
- getCrlTimestamp: Returnerer tidsstemplet for den underliggende spærreliste
Sker op mod en lokal kopi af revokationslister, vedligeholdt af NSP-platformen.
| Code Block |
|---|
OcesCvrRidService |
Validering eller opslag af CPR-nummer ud fra et MOCES certifikats ”subject serial number” (SSN), hvor den relevante service
afgøres udfra certifikatets issuer, f.eks. OCES1 vs OCES2:
- isRelated: Afgør om SSN og CPR-nummer hører sammen
- findRelatedCpr: Slår tilhørende CPR-nummer op ud fra SSN
| Code Block |
|---|
OcesUUID2CPRService |
Validering eller opslag af CPR-nummer ud fra et MOCES certifikats ”subject serial number” (mere specifikt medarbejder uuid'et):
- isRelated: Afgør om UUID og CPR-nummer hører sammen
- findRelatedCpr: Slår tilhørende CPR-nummer op ud fra UUID
| Code Block |
|---|
OcesPidService
|
| /sts/services/DKNCPBST2EHDSIIdws | WS-Trust snitflade baseret på OIO-IDWS version 1.1 | Følgende benytter denne snitflade:
| Udenlanske sundhedsfaglige | Input: Danish National Contact Point (DKNCP IDWS XUA Bootstrap token) Output: eHDSI IDWS XUA Identity Token | DKNCPBST skal være signeret af trusted part. Audience skal være konfigureret i databasen sts_ehdsiconf. | Modtager-system skal være konfigureret (i tabellen ehdsiAudienceConfiguration). |
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 2: STS-afhængigheder og eksterne snitflader
- NewSecurityTokenService -- Udstedelse af STS-signeret id-kort. Erstatter samtidig NameId til et kanonisk format (nødvendigt hvis id-kortet skal veksles til OIOSaml). SOSI Seal biblioteket benyttes af STS til serialisering/deserialisering af web service kaldet samt signering af udstedte ID-kort.
- SecurityTokenService -- Legacy udgave af ovennævnte service (uden erstatning af NameId). Benyt NewSecurityTokenService hvis muligt.
- Sosi2OIOSaml -- Ombytter STS-signeret id-kort fra SOSI ID-kort til OIOSAML assertion rettet mod et specifikt audience, f.eks. sundhed.dk. Bemærk at dette id-kort skal være udstedt af NewSecurityTokenService.
- OIOSaml2Sosi -- Ombytter OIOSaml token til signeret id-kort. Token skal være signeret af troværdig tredjepart.
- Bst2Idws -- Ombytter OIOSaml bootstrap token til signeret identitytoken rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart.
- JWT2Idws -- Ombytter JSON Web token til signeret identity-token rettet mod et givet audience, f.eks. FMK. Token skal være signeret af troværdig tredjepart (pt. en OID connector).
- DKNCPBST2EHDSIIdws - Ombytter et DKNCP Bootstrap token til et signeret eHDSI Idws Xua token rettet mod et givet audience. Token skal være signeret af troværdig tredjepart.
Komponentsnitflader
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Figur 6: Komponent-interfaces i STS
| Code Block |
|---|
OcesCrlService |
Check af OCES-spærrelistecheck:
- isRevoked: Checker om et X509-certifikat er spærret
- getCrlTimestamp: Returnerer tidsstemplet for den underliggende spærreliste
Sker op mod en lokal kopi af revokationslister, vedligeholdt af NSP-platformen.
| Code Block |
|---|
OcesCvrRidService |
Validering eller opslag af CPR-nummer ud fra et MOCES certifikats ”subject serial number” (SSN), hvor den relevante service
afgøres udfra certifikatets issuer, f.eks. OCES1 vs OCES2Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):
- isRelated: Afgør om SSN og CPR-nummer hører sammen
- findRelatedCpr: Slår tilhørende CPR-nummer op ud fra SSN
| Code Block |
|---|
ProcurationService
|
OcesUUID2CPRService |
Validering eller opslag Hentning af fuldmagter fra fuldmagtsservicen. Validering af CPR-nummer ud fra en borgers et MOCES certifikats ”subject serial number” (mere specifikt medarbejder uuid'et):
- isRelated: Afgør om UUID og CPR-nummer
...
- hører sammengetProcurationPrivileges
- : Henter listen af privilegier udstedt til den aktuelle bruger (borger) fra en anden borger.findRelatedCpr: Slår tilhørende CPR-nummer op ud fra UUID
| Code Block |
|---|
AuthorizationServiceOcesPidService |
Verificerer og beriger ID-kort med autorisation ID udfra Validering af CPR-nummer ud fra et POCES-certifikats ”subject serial number” (SSN):
- getAuthorizations: Finder autorisationer tilknyttet et isRelated: Afgør om SSN og CPR-nummer
Sker op mod en lokal kopi af autorisationsregisteret, vedligeholdt af NSP-platformen.
Datamodel
STS-anvendelse af database begrænser sig primært til læsning af konfigurationsdata og persistering af cachede værdier til (se Figur 5), og består af følgende tabeller:
- hører sammen
| Code Block |
|---|
ProcurationService
|
Hentning af fuldmagter fra fuldmagtsservicen. Validering af CPR-nummer ud fra en borgers CPR-nummer:
- getProcurationPrivileges: Henter listen af privilegier udstedt til den aktuelle bruger (borger) fra en anden borger.
| Code Block |
|---|
AuthorizationService
|
Verificerer og beriger ID-kort med autorisation ID udfra CPR-nummer:
- getAuthorizations: Finder autorisationer tilknyttet et CPR-nummer
Sker op mod en lokal kopi af autorisationsregisteret, vedligeholdt af NSP-platformen.
Datamodel
STS-anvendelse af database begrænser sig primært til læsning af konfigurationsdata og persistering af cachede værdier til (se Figur 5), og består af følgende tabeller:
Skema Tabel Beskrivelse Benyttes pt STS (backoffice) iboConfig indeholder audience specifik konfiguration for SOSI ID-kort til OIOSAML omveksling Ja STS (backoffice) audienceConfiguration Skema Tabel Beskrivelse Benyttes pt STS (backoffice) iboConfig indeholder audience specifik konfiguration for SOSI ID-kort til OIOSAML omveksling Ja STS (backoffice) audienceConfiguration indeholder konfiguration vedrørende billetomveksling fra bootstrap token til IDWS token og fra JWT token til OIOSaml token Ja STS (backoffice) roleDefinitions Indeholder opsætning af gyldige nationale roller, og hvorledes disse repræsenteres i id-kort og i SEB Ja STS (backoffice) authorizationDefinitions
Indeholder valide uddannelseskoder. Primært 4 cifre, men kan også indeholde bogstaver. Ja STS (backoffice) trustedCvr Indeholder en liste af CVR numre, der kan angive nationale roller uden at få disse valideret. Ja STS (lokal) cprcache indeholder relationer mellem certifikat og CPR-nummer. Anvendes hvis deploymiljøet er godkendt til opbevaring af relationen i klartekst (Nødvendig hvis ikke CPR web servicen altid skal kaldes med manglende CPR i ID-kort). Ja STS (lokal) cprhash indeholder et hash af mapningen mellem certifikat og CPR-nummer. Oprindeligt tænkt anvendt hvis relationerne ikke ønskes opbevaret som klartekst. Ikke længere muligt, idet der er behov for at kunne tilføje cpr nummer til et id-kort uden dette er angivet i input. Nej STS (lokal) whitelist indeholder information (CVR-nummer og system navn), der anvendes til at at give systemer adgang til udstedelse af ID-kort. Benyttes ikke længere. Nej STS (lokal) blacklist indeholder information (X509 certifikat subject serial number), der anvendes til at blokere for udstedelse af ID-kort for specifikke certifikater. Nej SDM autreg Indeholder aktuelle autorisationskoder for autoriserede sundhedsfaglige medarbejdere. Vedligeholdes af Autorisations importeren Ja SDM nationalRoles Indeholder roller importerede fra SEB Ja CRA crl Indeholder et antal spærrelister incl. metadata omkring seneste hentning af disse Ja CRA revoked Indeholder replika af en given spærreliste indeholdende aktuelt revokerede certifikater
Hvis en CRL er udstedt af en CA og denne CA trækkes tilbage, så vil alle dens rækker i revoked blive slettet og en enkelt række med NULL i serialnumber vil blive oprettet. Et certifikat skal derfor betragtes som trukket tilbage hvis dets CRL enpoint findes i crl og dets serienummer findes i revoked eller der findes en række med serienummeret NULL.
Ja sts_ehdsiconf ehdsiAudienceConfiguration Indeholder den konfiguration der er nødvendig for DKNCPBST2EHDSIIdws omvekslingen:
- Signeringscertifikater
- Whitelistede certifikater
- Levetid på den udstedte token
sts_ehdsiconf ehdsiPoliciesConfiguration Indeholder alle trustede policies. For hver policy findes der en STS policy det udstedte token får.
Databasemodellen er simpel og indeholder ingen bindinger til specifikke databaser. Tabellerne cprhash og cprcache fungerer som en simpel cache for CPR-opslag, og repopuleres automatisk, hvorfor rækkerne kan slettes efter behov.
...
STS indeholder indeholder endelig en cache at mapningen fra SubjectSerialNumber til cpr nummer for medarbejdere og borgere. Dvs. SubjectSerialNumber kan enten være et PID eller et cvr-rid. Tabellen ligger lokalt på de enkelte NSP-noder uden replikering. Data opdateres automatisk af STS og data vil altid kunne slettes unden funktionel effekt (vil dog have negativ, midlertidig effekt på performance).
iboConfig
DB: sts_audconf
Indeholder konfiguration af (Medarbejder) billet omveksling fra id-kort til OIOSaml token (sikker browseropstart)
dog have negativ, midlertidig effekt på performance).
iboConfig
DB: sts_audconf
Indeholder konfiguration af (Medarbejder) billet omveksling fra id-kort til OIOSaml token (sikker browseropstart)
Objektet indeholder informationen:
--------------------------------------
audience
publicKey
recipientURL
includeBST
deliveryNotOnOrAfterOffset
notBeforeOffset
notOnOrAfterOffset
idCardMaxAgeMins
trustedCvr
DB: sts_audconf
Objektet indeholder informationen:
--------------------------------------
cvr
endpoint
NSP Keystore (Luna box)
Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fra.
Placeret i dedikeret LUNA boks for maximim sikkerhed
roleDefinitions
Indeholder opsætning af gyldige nationale roller, og hvorledes disse repræsenteres i id-kort og i SEB (Sundhedsvæsenets Elektroniske Brugerstyring)
DB: sts_audconf
Objektet indeholder informationen:
--------------------------------------
audience
publicKey
recipientURL
includeBST
deliveryNotOnOrAfterOffset
notBeforeOffset
notOnOrAfterOffset
idCardMaxAgeMins
trustedCvr
DB: sts_audconf
Objektet indeholder informationen:
--------------------------------------
cvr
endpoint
NSP Keystore (Luna box)
Indeholder certifikat og nøgler for føderationen, samt trustede 3. parter der kan foretages billetomveksling fra.
Placeret i dedikeret LUNA boks for maximim sikkerhed
roleDefinitions
Indeholder opsætning af gyldige nationale roller, og hvorledes disse repræsenteres i id-kort og i SEB (Sundhedsvæsenets Elektroniske Brugerstyring)
DB: sts_audconf
Objektet indeholder informationen:
--------------------------------------
source -- Hvem har udstedt rollen, ex: 'NationalFederation'
externalName -- rollenavn, ex: 'nspSundAssistR1'
code -- rolle kode, ex: '41001'
value -- rolle navn, ex: 'SundAssistR1'
Tabelbeskrivelser
source -- Hvem har udstedt rollen, ex: 'NationalFederation'
externalName -- rollenavn, ex: 'nspSundAssistR1'
code -- rolle kode, ex: '41001'
value -- rolle navn, ex: 'SundAssistR1'
Tabelbeskrivelser
Tabel: audienceConfiguration
DB: sts_audconf
CREATE TABLE audienceConfiguration (
audience VARCHAR(255) NOT NULL,
attribute VARCHAR(128) NOT NULL,
attribute_value VARCHAR(4095));
CREATE UNIQUE INDEX audienceConfiguration_uniq ON audienceConfiguration (audience, attribute);
Tabel: authorizationDefinitions
-- new table to hold authorizationDefinitions
USE sts_audconf;
CREATE TABLE authorizationDefinitions (
role VARCHAR(4) NOT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
Tabel: cprcache
CREATE TABLE cprcache (
ssn VARCHAR(64) NOT NULL,
cpr VARCHAR(16) NOT NULL,
createdDate datetime);
CREATE UNIQUE INDEX cprcache_ssn ON cprcache (ssn);
Tabel: iboConfigTabel: audienceConfiguration
DB: sts_audconf
CREATE TABLE audienceConfiguration iboConfig (
audience VARCHAR(255) NOT NULL,
attribute publicKey TEXT NOT NULL,
recipientURL VARCHAR(128255) NOT NULL,
attribute_value VARCHAR(4095));
CREATE UNIQUE INDEX audienceConfiguration_uniq ON audienceConfiguration (audience, attribute);includeBST BOOL NOT NULL,
deliveryNotOnOrAfterOffset BIGINT NOT NULL,
notBeforeOffset BIGINT NOT NULL,
notOnOrAfterOffset BIGINT NOT NULL,
idCardMaxAgeMins BIGINT,
KEY audience (audience)
Tabel: trustedCvrTabel: authorizationDefinitions
-- new table to hold authorizationDefinitionstrustedCvr for national roles
USE sts_audconf;
CREATE TABLE authorizationDefinitions trustedCvr (
role cvr VARCHAR(48) NOT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
Tabel: cprcache
CREATE TABLE cprcache (
ssn ,
endpoint VARCHAR(64) NOT NULL,cpr
roleValue VARCHAR(16) NOT NULL,
createdDate datetime);
CREATE UNIQUE INDEX cprcache_ssn ON cprcache (ssn64)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create unique index trustedCvr_uniq on trustedCvr (cvr, endpoint);
Tabel: iboConfigroleDefinitions
-- new table to hold roleDefinitions for national roles
USE DB: sts_audconf;
DROP TABLE IF EXISTS roleDefinitions;
CREATE TABLE iboConfig roleDefinitions (
audience source VARCHAR(255) NOT NULL,
publicKey TEXT NOT NULL,
recipientURL externalName VARCHAR(255) NOT NULL,
includeBST BOOL NOT NULL,
deliveryNotOnOrAfterOffset BIGINT NOT NULL,
notBeforeOffset BIGINT ) NOT NULL,
notOnOrAfterOffset BIGINT code VARCHAR(255) NOT NULL,
idCardMaxAgeMins BIGINT,
KEY audience (audience)
Tabel: trustedCvr
value VARCHAR(255)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
GRANT ALL ON sts_audconf.roleDefinitions TO 'sts'@'%';
Tabel: ehdsiAudienceConfiguration-- new table to hold trustedCvr for national roles
USE sts_audconf;ehdsiconf;
CREATE TABLE ehdsiPoliciesConfiguration (
audience VARCHAR(255) NOT NULL,
bst_policy VARCHAR(255CREATE TABLE trustedCvr (
cvr VARCHAR(8) NOT NULL,
endpoint sts_policy VARCHAR(64255) NOT NULL,
roleValue comment VARCHAR(64255)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create unique index trustedCvrCREATE UNIQUE INDEX ehdsiPoliciesConfiguration_uniq on trustedCvr (cvr, endpointON ehdsiPoliciesConfiguration (audience, bst_policy, sts_policy);
Tabel: roleDefinitions-- new table to hold roleDefinitions for national roles: ehdsiPoliciesConfiguration
USE sts_audconf;DROP TABLE IF EXISTS roleDefinitionsehdsiconf;
CREATE TABLE roleDefinitions ehdsiAudienceConfiguration (
source audience VARCHAR(255) NOT NULL,
externalName attribute VARCHAR(25550) NOT NULL,
code attribute_value VARCHAR(2554095) NOT NULL,
value comment VARCHAR(255)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
GRANT ALL ON sts_audconf.roleDefinitions TO 'sts'@'%'CREATE UNIQUE INDEX ehdsiAudienceConfiguration_uniq ON ehdsiAudienceConfiguration (audience, attribute);
Sløring af sundhedsfaglige - IDSAS
...