In dit hoofdstuk wordt de inhoud van het SAML inschrijftoken besproken. Het SAML inschrijftoken bevat de, binnnen binnen een zorgorganisatie, gevalideerde BSN en is ondertekend door een zorgverlener /of medewerker. Het SAML inschrijftoken is een op XML gebaseerde SAML assertion en heeft tot doel de assertions (bewijs van een bewering) over te brengen tussen partijen.
Alle XML voorbeelden in het document dienen door de betrokken partijen tijdens het bouwen van de uitwisseling getest, en waar nodig, in samenspraak met VZVZ aangepast te worden voor een juiste optimale werking.
...
Het SAML inschrijftoken is een afgegeven SAML assertion met betrekking tot de gevalideerde BSN die gebruikt wordt bij berichtauthenticatie voor het landelijk EPD. Het SAML inschrijftoken is ondertekend met behulp van een UZI-pas van een zorgverlener /of medewerker of m.b.v. het identiteitscertificaat van de medewerker die uitgegeven is door ZORG-ID. Er wordt gebruik gemaakt van SAML v2.0 [SAML Core].
...
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 zorgaanbieder organisatie waarbinnen de face to face controle heeft plaatsgevonden of plaatsgevonden of waar het inschrijftoken wordt verlengd of waar het WID is ingescand in combinatie met een F2F controle. |
@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 | Bevat de handtekening over de assertion zoals gezet met behulp van de UZI pas van de zorgverlener (Z) of de UZI medewerkerpas van de medewerker (N). De handtekening dient geplaatst te zijn met behulp van het authenticatie certificaat op de pas. De handtekening kan ook gezet zijn met het identiteitscertificaat van de medewerker die uitgegeven is door ZORG-ID. Bij verlenging van het inschrijftoken wordt alleen gebruik gemaakt van het identiteitscertificaat van de medewerker die uitgegeven is door ZORG-ID. |
Subject | 1 | BSN van de patient patiënt 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 | Bevat de X509 Issuer.serial van de medewerkerspas of zorgverlenerpas.Of of zorgverlener pas of het publieke deel van het door ZORG-ID aangemaakte identiteitscertificaat. |
Conditions | 1 | Moet aanwezig zijn. |
@NotBefore | 1 | Moet aanwezig zijn. |
@NotOnOrAfter | 1 | Moet aanwezig zijn. Mag maximaal 1,5 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 validatie. Dit mag t.b.v. het werkproces ook de 'timestamp' zijn van het moment van aanmaken van het inschrijftoken of het tijdstip van inscannen van het WID. |
@SessionIndex | 0 | Niet gebruiken |
AuthnContext | 1 | Moet aanwezig zijn |
AuthnContextClassRef | 1 | urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI of urn:oasis:names:tc:SAML:2.0:ac:classes:X509 |
AttributeStatement | 1 | Moet aanwezig zijn |
Attribute | 1 | Moet aanwezig zijn. |
@Name | 1 | Vaste waarde: "Uitvoerder" |
AttributeValue | 1 | De UZI van de zorgverlener of medewerker die het token heeft ondertekend of het personeelsnummer indien het scantoken gegenereerd is door ZORG-ID. |
Attribute | 0..1 | Alleen aanwezig indien het een nieuw inschrijftoken op basis van een ingescand WID betreft. |
@Name | 0..1 | Vaste waarde “Scantoken” |
AttributeValue | 0..1 | Het scantoken Base64 geencodeerd. Voor het Scantoken zie AORTA_Auth_IH_Scantoken |
...
Attribute | 0. |
...
.1 | Alleen aanwezig indien het een inschrijftoken wordt verlengd op basis van een eerdere inschrijftoken aangemaakt op basis van een UZI-pas van een zorgverlener of medewerker of op basis van een eerdere scantoken op basis van het identiteitscertificaat van de uitvoerende medewerker uit ZORG-ID. | |
@Name | 0..1 | Vaste waarde “Verlengingstoken” |
AttributeValue | 0..1 | Het originele inschrijftoken op basis van een UZI-pas of het eerdere Scantoken op basis van het identiteitscertificaat van de uitvoerende zorgverlener/medewerker uit ZORG-ID dat verlengd gaat worden, wordt Base64 geencodeerd. |
N.B.: bovenstaande tabel bevat de meest gebruikte elementen van SAML assertions en is derhalve niet volledig. Voor niet genoemde elementen geldt: Niet gebruiken.
...
Het SAML inschrijftoken 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 | ||||
---|---|---|---|---|
|
Code Block |
---|
ID="token_dd1c1f96-f0b0-4026-a978-4d724c0a0a4f" IssueInstant="2009-06-24T11:47:34Z" Version="2.0"> |
...
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 | ||||
---|---|---|---|---|
|
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> |
...
De URN string is opgebouwd uit een IIroot en een IIext. "II" staat voor het HL7v3 datatype Instance Indentifier. Om de namespace in URN uniek te krijgen is II als prefix voor de root en ext geplaatst.
URA's worden uitgedrukt als een id onder het identificatiesysteem "2.16.528.1.1007.3.3". De URA wordt toegekend door het UZI-register. Stel dat de URA de waarde "12345678" heeft, dan ziet de URN er als volgt uit:
urn:IIroot:2.16.528.1.1007.3.3:IIext:12345678:12345678
Anchor | ||||
---|---|---|---|---|
|
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> |
De Subject verwijst naar de door de zorgverlener/medewerker gevalideerde BSN. De BSN validatie dient plaatsgevonden te hebben
1) aan Aan de balie door:
- Een face to face controle van de patient en diens Wettelijk Identiteits Document (WID)
- Een controle van de geldigheid van het WID bij SBV-Z
- Een controle van de correctheid van het BSN bij SBV-Z
2) door Door inlezen van de chip uit het WID waarbij:
- De echtheid van het WID wordt gecontroleerd
- De BSN wordt uitgelezen uit de chip of, bij paspoorten uitgegeven na 1 augustus 2021, de BSN QR code wordt gelezen.
3) Het subject en de daarbij behorende BSN overnemen uit het oorspronkelijke inschrijftoken dat verlengd gaat worden.
Vervolgens moet de SubjectConfirmation nog toegevoegd worden:
Code Block |
---|
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches "> </saml:SubjectConfirmation> |
Anchor | ||||
---|---|---|---|---|
|
Code Block |
---|
<saml:Conditions NotBefore="2009-06-24T11:47:34Z" NotOnOrAfter="2010-12-24T11:47:34Z"> |
...
Het attribuut NotOnOrAfter is de tijd waarop de SAML assertion vervalt. NotOnOrAfter mag na het verstrijken van de geldigheid van het certifcaat certificaat (waarmee het inschrijftoken is getekend) liggen.
...
Het inperken van bepaalde partijen (AudienceRestriction) waarvoor de assertion bedoeld is wordt beschreven in paragraaf 2.4.5 Ontvanger.
Anchor | ||||
---|---|---|---|---|
|
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> |
...
AORTA Applicatie-id's worden uitgedrukt als een id onder het identificatiesysteem "2.16.840.1.113883.2.4.6.6". Het correcte applicatie-id voor de GBZ-applicatie wordt toegekend bij aansluiting op de AORTA. Stel dat dit "300" zou zijn, dan ziet de URN er als volgt uit:
urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:300
Anchor | ||||
---|---|---|---|---|
|
Code Block |
---|
<saml:AuthnStatement AuthnInstant="2009-06-24T11:47:34" SessionIndex="token_2.16.528.1.1007.3.3.1234567.1_0123456789"> |
...
Het subject, de gevalideerde BSN, in de SAML assertion is geauthenticeerd geauthentiseerd door middel van een authenticatiemiddel van de uitvoerende zorgverlener/medewerker.
...
Afsluiting authentication statement.
Anchor | ||||
---|---|---|---|---|
|
Code Block |
---|
<saml:AttributeStatement> |
...
Indien het scantoken is gegenereerd door Zorg-ID, dan kan dit attribuut ook het personeelsnummer uitgegeven door de zorgorganisatie bevatten. In dat geval dient het personeelsnummer voorafgegaan te worden door een OID die deze personeelsnummering aanduidt, Dit zal over het algemeen een OID zijn die begint met de OID van de zorgorganisatie.
Bijvoorbeeld:
Code Block |
---|
<saml:AttributeValue>2.16.840.1.113883.2.4.3.65.1.2:1234567</saml:AttributeValue> |
In dit voorbeeld zijn de volgende waarden te vinden:
2.16.840.1.113883.2.4.3.65: Elkerliek ziekenhuis
1.2: personeelsnummers
1234567 personeelsnummer Medewerker X
Scantoken
ook de Common Name (CN) van het identiteitscertificaat waarmee het token is ondertekend bevatten.
Bijvoorbeeld:
Code Block |
---|
<saml:AttributeValue>Jan Test:91000001</saml:AttributeValue> |
In dit voorbeeld zijn de volgende waarden te vinden:
Jan Test: Voornaam Achternaam
91000001: Uniek nummer`. Start van 91000000 en hoger.
Scantoken
Code Block |
---|
<saml:Attribute Name="Scantoken">
<saml:AttributeValue xsi:type="base64Binary">
Hier het scantoken base64 geëncodeerd.
</saml:AttributeValue>
</saml:Attribute> |
Het attribuut Scantoken bevat het Scantoken Base64 geëncodeerd. Voor de opbouw van het Scantoken wordt verwezen naar [AORTA_Auth_IH_Scantoken]. Dit attribuut dient alleen aanwezig (en gevuld) te zijn als het gehele inschrijftoken ondertekend is met het identiteitscertificaat van ZORG-ID.
Verlengingstoken
Code Block |
---|
<saml:Attribute Name="ScantokenVerlengingstoken"> <saml:AttributeValue xsi:type="base64Binary"> Hier het scantokenoriginele inschrijftoken base64 geëncodeerd. </saml:AttributeValue> </saml:Attribute> |
Het attribuut Scantoken bevat het Scantoken Verlengingstoken bevat het originele Inschrijftoken obv UZI-pas of het Scantoken op basis van het identiteitscertificaat van de uitvoerende medewerker uit ZORG-ID, Base64 geëncodeerd. Voor de opbouw van het Scantoken wordt verwezen naar [AORTA_Auth_IH_Scantoken]. Dit Het attribuut Verleningstoken dient alleen aanwezig (en gevuld) te zijn als het gehele inschrijftoken ondertekend is met het identiteitscertificaat van ZORG-ID.
...
- 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 inschrijftoken en in het SAML inschrijftoken geplaatst wordt, moet er een "enveloped-signature" transformatie uitgevoerd worden die de Signature tags uit het SAML inschrijftoken verwijderd gevolgd door een “exc-c14n transformatie” (zie ook [SAML Core] §5.4.3 en §5.4.4). |
Anchor | ||||
---|---|---|---|---|
|
De headers
Eerst wordt het SAML inschrijftoken – 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> |
...