...
De assertion heeft de volgende structuur (de waarden die in het token gebruikt worden zijn fictief):
Element/@Attribute | 0..1 | Omschrijving |
@ID | 1 | Unieke identificatie van de Assertion |
@Version | 1 | Versie van het SAML Protocol. Vaste waarde moet zijn 2.0 |
@IssueInstant | 1 | Tijdstip van uitgifte van de Assertion. |
Issuer | 1 | De URA van de organisatie waarbinnen de medewerker die de scan uitvoert werkzaam is. |
@NameQualifier | 0 | Niet gebruiken |
@SPNameQualifier | 0 | Niet gebruiken |
@Format | 1 | Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" |
@SPProviderID | 0 | Niet gebruiken |
Signature | 1 | Scantoken: Bevat de handtekening over de assertion zoals gezet met behulp van het door Zorg-ID aangemaakte identiteitscertificaat van de medewerker die de scan uitvoert. WID_token: Bevat de handtekening over de assertion zoals gezet met behulp van het Zorg-ID servercertificaat. |
Subject | 1 | BSN van de patient waarvan de BSN gevalideerd is. |
BaseID | 0 | Niet gebruiken |
NameID | 1 | Bevat de gevalideerde BSN. |
EncryptedID | 0 | Niet gebruiken |
SubjectConfirmation | 1 | Moet aanwezig zijn. |
@Method | 1 | 'urn:oasis:names:tc:SAML:2.0:cm:sender-vouches’ |
SubjectConfirmationData | 1 | Bevat Keyinfo |
@Recipient | 0 | Niet gebruiken |
@NotOnOrAfter | 0 | Niet gebruiken |
@InResponseTo | 0 | Niet gebruiken |
@NotBefore | 0 | Niet gebruiken |
@Address | 0 | Niet gebruiken |
KeyInfo | 1 | Scantoken: Bevat het publieke deel van het X509 identiteitscertificaat WID token: Bevat het publieke deel van het ZORG-ID servercertificaat |
Conditions | 1 | Moet aanwezig zijn. |
@NotBefore | 1 | Moet aanwezig zijn. |
@NotOnOrAfter | 1 | Moet aanwezig zijn. Mag maximaal 10 jaar na @NotBefore liggen. |
Condition | 0 | Niet gebruiken |
AudienceRestriction | 1 | Moet aanwezig zijn |
Audience | 1..* | Minimaal 1 element: urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:1 (is de ZIM). Meerdere audiences zijn toegestaan. |
ProxyRestriction | 0 | Niet gebruiken |
Advice | 0 | Niet gebruiken |
AuthnStatement | 1 | Moet aanwezig zijn |
@AuthnInstant | 1 | Tijdstip van BSN scan. |
@SessionIndex | 0 | Niet gebruiken |
AuthnContext | 1 | Moet aanwezig zijn |
AuthnContextClassRef | 1 | urn:oasis:names:tc:SAML:2.0:ac:classes:X509 |
AttributeStatement | 1 | Moet aanwezig zijn |
Attribute | 1 | Moet aanwezig zijn. |
@Name | 1 | Vaste waarde: “Zorgaanbieder” |
AttributeValue | 1 | De URA van de zorgaanbieder waar de zorgverlener of medewerker in dienst is. |
Attribute | 1 | Moet aanwezig zijn alleen in Scantoken. |
@Name | 1 | Vaste waarde: “WID_token” |
AttributeValue | 1 | Base64 representatie van het WID_token |
Attribute | 1 | Moet aanwezig zijn alleen in het WID_token. |
@Name | 1 | Vaste waarde: “WID_raw_data” |
AttributeValue | 1 | Base64 representatie van de ingescande datagroep 11 van de chip van het WID inclusief het Document Security Object. |
N.B.: bovenstaande tabel bevat de meest gebruikte elementen van SAML assertions en is derhalve niet volledig. Voor niet genoemde elementen geldt: Niet gebruiken.
...
Tabel AORTA.STK.t3300 – Namespaces
Prefix | Namespace URI |
ds | |
saml | urn:oasis:names:tc:SAML:2.0:assertion |
wss | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd |
Bij het gebruik van de namespace-prefixes is het van belang deze na het ondertekenen niet meer te veranderen, dit maakt de digitale handtekening ongeldig. |
Anchor Inhoud Inhoud
Inhoud
Inhoud | |
Inhoud |
De volgende paragrafen beschrijven de verschillende kenmerken en beveiligingsgerelateerde gegevens die het SAML scantoken onderscheiden, zoals in [IH tokens generiek] beschreven is.
...
Het SAML scantoken begint met het Assertion element en een verwijzing naar de XML SAML namespace voor SAML 2.0 assertions. De attributen behorende bij het Assertion element wordt in paragraaf 2.4.1 Uniekheid beschreven.
Anchor Uniekheid Uniekheid
Uniekheid
Uniekheid | |
Uniekheid |
Code Block |
---|
ID="token_dd1c1f96-f0b0-4026-a978-4d724c0a0a4f" IssueInstant="2009-06-24T11:47:34Z" Version="2.0"> |
...
Het wordt aanbevolen een UUID (Universally Unique Identifier) te gebruiken. Bij het gebruik van andere vormen is er een kans, hoe klein ook, dat een ID samenvalt met een ID gemaakt volgens een andere methode van een andere leverancier).
Een ID in XML mag niet met een cijfer beginnen. Bij het gebruik van een UUID is het dus aan te raden een prefix te gebruiken, welke met een letter of underscore (‘_’) begint. |
Het attribuut IssueInstant is een tijdsmoment van uitgifte van de SAML assertion. De tijdswaarde is gecodeerd in UTC. Het attribuut Version is de gebruikte SAML versie van de SAML assertion. De aanduiding voor de versie van SAML gedefinieerd in deze specificatie is "2.0".
Anchor Afzender Afzender
Afzender
Afzender | |
Afzender |
Code Block |
---|
<saml:Issuer> <!-- De Issuer verwijst naar de organisatie waarbinnen de BSN validatie heeft plaats gevonden.--> urn:IIroot:2.16.528.1.1007.3.3:IIext:12345678 </saml:Issuer> |
...
urn:IIroot:2.16.528.1.1007.3.3:IIext:12345678
Anchor Onderwerp Onderwerp
Onderwerp
Onderwerp | |
Onderwerp |
Code Block |
---|
<saml:Subject> <saml:NameID> 950052413 </saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches "> </saml:SubjectConfirmation> </saml:Subject> |
...
Code Block |
---|
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches "> </saml:SubjectConfirmation> |
Anchor Geldigheid Geldigheid
Geldigheid
Geldigheid | |
Geldigheid |
Code Block |
---|
<saml:Conditions NotBefore="2009-06-24T11:47:34Z" NotOnOrAfter="2010-12-24T11:47:34Z"> |
...
Het attribuut NotBefore is de tijd waarop de SAML assertion geldig wordt. NotBefore moet altijd op of na de aanvang van de geldigheidsdatum van het certificaat (waarmee het scantoken is getekend) liggen.
Wordt een bericht met een scantoken ontvangen voor NotBefore is aangevangen, dan moet dit bericht geweigerd worden. |
Het attribuut NotOnOrAfter is de tijd waarop de SAML assertion vervalt. NotOnOrAfter mag na het verstrijken van de geldigheid van het certifcaat (waarmee het scantoken is getekend) liggen.
Wordt een bericht met een scantoken ontvangen op of nadat NotOnOrAfter is verstreken, dan moet dit bericht geweigerd worden. |
Deze tijd is als bovenstaande tijd geformatteerd. Het maximaal toegestane verschil tussen NotBefore en NotOnOrAfter is tien jaar.
De geldigheidsduur van een scantoken (NotOnOrAfter minus NotBefore) kan langer zijn dan de geldigheidsduur van het identiteitscertificaat waarmee het token wordt getekend. |
Indien het certificaat waarmee het scantoken is getekend op de CRL is geplaatst, dan dient het scantoken niet geweigerd te worden door het LSP. Het is op de CRL niet inzichtelijk om welke reden een certificaat op de CRL is geplaatst. Dit kunnen uiteenlopende redenen zijn zoals een verloren telefoon. Om het zorgproces niet te frustreren wordt deze controle procesmatig opgepakt door Security Management.
...
Echter, bij het ondertekenen van het scantoken moet er een geldig certificaat gebruikt worden. Indien bij ondertekening van het scantoken het certificaat al op de CRL is geplaatst, dan dient het scantoken wel geweigerd te worden.
Indien het certificaat vóór ondertekening van het scantoken op de CRL is geplaatst, dan dient het scantoken geweigerd te worden door het LSP. |
Indien het certificaat na ondertekening van het scantoken op de CRL is geplaatst, dan dient het scantoken niet geweigerd te worden. |
Het inperken van bepaalde partijen (AudienceRestriction) waarvoor de assertion bedoeld is wordt beschreven in paragraaf 2.4.5 Ontvanger.
Anchor Ontvanger Ontvanger
Ontvanger
Ontvanger | |
Ontvanger |
Code Block |
---|
<saml:AudienceRestriction> <!-- Root en extensie van de ZIM --> <saml:Audience>urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:1</saml:Audience> </saml:AudienceRestriction> |
...
urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:300
Anchor Authenticatie Authenticatie
Authenticatie
Authenticatie | |
Authenticatie |
Code Block |
---|
<saml:AuthnStatement AuthnInstant="2009-06-24T11:47:34" SessionIndex="token_2.16.528.1.1007.3.3.1234567.1_0123456789"> |
...
Afsluiting authentication statement.
Anchor Attributen Attributen
Attributen
Attributen | |
Attributen |
Code Block |
---|
<saml:AttributeStatement> |
...
- Voor het berekenen van de hashwaarde wordt SHA-256 gebruikt.
- Voor de digitale handtekening in AORTA wordt gebruik gemaakt van een RSA handtekening over een SHA-256 digest.
Omdat de XML Signature onderdeel is van het SAML scantoken en in het SAML scantoken geplaatst wordt, moet er een "enveloped-signature" transformatie uitgevoerd worden die de Signature tags uit het SAML scantoken verwijderd gevolgd door een “exc-c14n transformatie” (zie ook [SAML Core] §5.4.3 en §5.4.4). |
Anchor Opbouw Opbouw
Opbouw
Opbouw | |
Opbouw |
De headers
Eerst wordt het SAML scantoken – het <saml:Assertion ...> element aangemaakt en gevuld met die elementen, zoals beschreven in paragraaf 2.4 Inhoud.
Code Block |
---|
<saml:Assertion ID="token_2.16.528.1.1007.3.3.1234567.1_0123456789" IssueInstant="2009-06-24T11:47:34Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> ... Zie paragraaf 2.4 Inhoud ... </saml:Assertion> |
...
- Neem het SignedInfo blok op.
- Neem de SignatureValue op.
- Neem certificaatgegevens in het KeyInfo blok op, in de vorm van het volledige publieke certificaat (in het scantoken het identiteitscertificaat; in het WID-token het ZORG-ID servercertificaat).
Wanneer een bericht een SAML assertion bevat, moet dat bericht precies één bijbehorende digitale handtekening bevatten. |
Het maken van de XML Signature uit strings levert de SAML assertion op met daarin de Signature.
...