Wiki Markup |
---|
In dit hoofdstuk wordt de inhoud van het gecreëerde SAML authenticatietoken van DigiD \[DigiD Koppel\] besproken ,dat bij berichtauthenticatie voor patiënten wordt gebruikt. Het SAML authenticatietoken bevat informatie over de toegepaste authenticatie en identificatie van de patiënt. Het SAML authenticatietoken is een op XML gebaseerde SAML assertion en heeft tot doel de _assertions_ (beweringen over authenticatie) over te brengen tussen partijen (service- en identity provider) die een vertrouwensrelatie hebben.
\\
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.
\\
Voor het verkrijgen van het SAML authenticatietoken en het aanbieden van dit token aan de ZIM worden de volgende profielen gebruikt: |
...
De assertion heeft de volgende structuur (de waarden die in het token gebruikt worden zijn fictief):
<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" Version="2.0" ID="_dc9f793e2811b86f8e5cdf43ab5fd47d1fe0e61c" IssueInstant="2012-12-20T18:50:27Z"> <saml:Issuer>SamlIssuer</saml:Issuer> <saml:Subject> <saml:NameID>s00000000:12345678</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData InResponseTo="_7afa6d9f9ff28ca9233ada1d9ec2aa1bd6c5ce49" Recipient="http://example.com/artifact_url" NotOnOrAfter="2012-12-20T18:52:27Z"/> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2012-12-20T18:48:27Z" NotOnOrAfter="2012-12-20T18:52:27Z"> <saml:AudienceRestriction> <saml:Audience>
urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:1
</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement SessionIndex="17" AuthnInstant="2012-12-20T18:50:27Z"> <saml:SubjectLocality Address="127.0.0.1"/> <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract </saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion>
Anchor |
---|
| _Toc298159902 |
---|
| _Toc298159902 |
---|
|
Anchor |
---|
| _Toc304817218 |
---|
| _Toc304817218 |
---|
|
Anchor |
---|
| _Toc530128054 |
---|
| _Toc530128054 |
---|
|
Namespaces
...
Anchor |
---|
| _Ref271706292 |
---|
| _Ref271706292 |
---|
|
Anchor |
---|
| _Ref271706295 |
---|
| _Ref271706295 |
---|
|
Anchor |
---|
| _Toc298159904 |
---|
| _Toc298159904 |
---|
|
Anchor |
---|
| _Toc304817220 |
---|
| _Toc304817220 |
---|
|
Anchor |
---|
| _Toc530128056 |
---|
| _Toc530128056 |
---|
|
Uniekheid
<saml:Assertion
Version="2.0"
ID="_dc9f793e2811b86f8e5cdf43ab5fd47d1fe0e61c"
IssueInstant="2012-12-20T18:50:27Z">
De attributen van het SAML assertion element maken van de afgegeven SAML assertion een uniek gegeven. Het attribuut ID identificeert op een unieke wijze de assertion. 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 |
---|
| _Ref272396141 |
---|
| _Ref272396141 |
---|
|
Anchor |
---|
| _Ref272396143 |
---|
| _Ref272396143 |
---|
|
Anchor |
---|
| _Toc298159905 |
---|
| _Toc298159905 |
---|
|
Anchor |
---|
| _Toc304817221 |
---|
| _Toc304817221 |
---|
|
Anchor |
---|
| _Toc530128057 |
---|
| _Toc530128057 |
---|
|
Onderwerp
<saml:Subject> <saml:NameID>s00000000:12345678</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData
InResponseTo="_7afa6d9f9ff28ca9233ada1d9ec2aa1bd6c5ce49"
Recipient="http://example.com/artifact_url"
NotOnOrAfter="2012-12-20T18:52:27Z"/> </saml:SubjectConfirmation>
</saml:Subject>
Het onderwerp <Subject> bij berichtauthenticatie met DigiD is een referentie naar een authenticatieverzoek van een patiënt dat door het goed beheerd patiëntenportaal is geïnitieerd. Het onderwerp bevat een uniek authenticatienummer, het <NameID> element.
DigiD neemt in het element <NameID> het sectoraal nummer op in het formaat <sectorcode>:<sectoraal nummer>
Indien de sectorcode de waarde 'S00000000' heeft, dan is het sectoraal nummer een BurgerServiceNummer.
Het InResponseTo attribuut en het Recipient attribuut in de bevestiging van het onderwerp <SubjectConfirmation> worden niet gebruikt door het LSP. Deze attributen worden echter wel opgenomen in de assertion.
Verder heeft de bevestiging van het onderwerp een geldigheidsduur (het NotOnOrAfter attribuut). De geldigheidsduur geeft de duur van een sessie aan tussen het goed beheerd patiëntenportaal en de identity provider (DigiD).
Voor deze bevestigingsmethode (het Method attribuut) moet de URN waarde "urn:oasis:names:tc:SAML:2.0:cm:bearer" (assertion drager) worden gebruikt.
Anchor |
---|
| _Ref272395547 |
---|
| _Ref272395547 |
---|
|
Anchor |
---|
| _Ref272395550 |
---|
| _Ref272395550 |
---|
|
Anchor |
---|
| _Ref286140894 |
---|
| _Ref286140894 |
---|
|
Anchor |
---|
| _Ref286140906 |
---|
| _Ref286140906 |
---|
|
Anchor |
---|
| _Toc298159906 |
---|
| _Toc298159906 |
---|
|
Anchor |
---|
| _Toc304817222 |
---|
| _Toc304817222 |
---|
|
Anchor |
---|
| _Toc530128058 |
---|
| _Toc530128058 |
---|
|
Geldigheid
<saml:Conditions
NotBefore="2012-12-20T18:48:27Z"
NotOnOrAfter="2012-12-20T18:52:27Z"> … </saml:Conditions>
Op de plaats van de drie punten (…) dient een AudienceRestriction te worden toegevoegd zoals beschreven in paragraaf 2.3.5 Ontvanger).
Het attribuut NotBefore is de tijd waarop de afgegeven SAML assertion geldig wordt.
...
Anchor |
---|
| _Ref269905408 |
---|
| _Ref269905408 |
---|
|
Anchor |
---|
| _Ref269905411 |
---|
| _Ref269905411 |
---|
|
Anchor |
---|
| _Toc298159908 |
---|
| _Toc298159908 |
---|
|
Anchor |
---|
| _Toc304817224 |
---|
| _Toc304817224 |
---|
|
Anchor |
---|
| _Toc530128060 |
---|
| _Toc530128060 |
---|
|
Ontvanger
<saml:AudienceRestriction> <!-- Root en extensie van de ZIM en het patiëntenportaal -->
<saml:Audience>urn:IIroot:2.16.840.1.113883.2.4.6.6:IIext:1</saml:Audience> </saml:AudienceRestriction>
In de AudienceRestriction wordt beschreven aan welke ontvangende partijen (service providers) de SAML assertion is gericht. De waarden in de elementen zijn (voorlopig) vaste waarden. Voor de <Audience> parameter is (ook) gekozen voor URN, zie voor de opbouw van de URN paragraaf 2.3.4 Afzender.
Vooralsnog staat DigiD niet toe dat er meerdere audiences in het token worden teruggegeven. De root en extensie van de ZIM zullen niet zijn opgenomen in de assertion. Het LSP zal zo geconfigureerd moeten worden dat tokens waarbij als audience het patiëntenportaal is opgenomen ook toegelaten worden.
Anchor |
---|
| _Ref272398667 |
---|
| _Ref272398667 |
---|
|
Anchor |
---|
| _Ref272398670 |
---|
| _Ref272398670 |
---|
|
Anchor |
---|
| _Toc298159909 |
---|
| _Toc298159909 |
---|
|
Anchor |
---|
| _Toc304817225 |
---|
| _Toc304817225 |
---|
|
Anchor |
---|
| _Toc530128061 |
---|
| _Toc530128061 |
---|
|
Authenticatie
<saml:AuthnStatement
SessionIndex="17"
AuthnInstant="2012-12-20T18:50:27Z"> …
</saml:AuthnStatement>
Op de plaats van de drie punten (…) worden de <SubjectLocality> en de <AuthnContext> toegevoegd zoals hieronder beschreven.
Het onderwerp (Subject), een patiënt, in de SAML assertion is geauthenticeerd doormiddel van een authenticatiemiddel op een gegeven moment.
<saml:SubjectLocality Address="127.0.0.1"/>
De SubjectLocality is gevuld met het IP-adres (Address attribuut) van de PC van de gebruiker en is onderdeel van het AuthnStatement. Deze wordt gebruikt om te verifiëren of de patiënt een vervolg verzoek vanaf hetzelfde IP-adres doet als zijn initiële verzoek tijdens het benaderen van het patiëntenportaal.
...
Het XML Signature blok is onderdeel van het SAML authenticatietoken. Het XML Signature blok komt na het <saml:Issuer> element van de <saml:Assertion>.
<ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#_b2728a3aa52c4779c4c77ab8dd8a7dda604c94c7"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces PrefixList="ds saml xs"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>675ga8KqGFqJSGgSJHzoVU+kgrlWqYLpTxJ28gWLPkQ=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>ecXG...igg==</ds:SignatureValue> <ds:KeyInfo> <ds:KeyName>e37ee2522de410c633b3700835727ebf1834cd88</ds:KeyName>
<ds:X509Data>
<ds:X509Certificate>
…DATA…
</ds:X509Certificate>
</ds:X509Data> </ds:KeyInfo> </ds:Signature>
Het certificaat waarmee de assertion is getekend is opgenomen in het X509Data element.
Het in het metadatadocument gebruikte entity_id wordt gebruikt als Issuer in de Assertion.
Om van DigiD een ondertekende assertion te verkrijgen is het nodig dat de dienstaanbieder (het GBP) éénmalig in de uitwisseling van metadata van de dienstaanbieder met DigiD binnen het element <SPSSODescriptor> het attribuut WantAssertionsSigned op "true" zet.
<md:SPSSODescriptor WantAssertionsSigned="true"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
Anchor |
---|
| _Toc530128065 |
---|
| _Toc530128065 |
---|
|
Plaats van het SAML token in het SOAP bericht.
...
Het gehele SAML authenticatietoken met daarin de digitale handtekening worden in het WS-Security SOAP Header gezet.
Op het <wss:Security> element moet een soap:mustUnderstand="1" vlag opgenomen worden, die aangeeft dat de ontvanger dit security element moet verwerken en een soap:actor="http://www.aortarelease.nl/actor/zim" die aangeeft dat de ZIM dit security element verwerkt.
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
...
<wss:Security xmlns:wss=
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
soap:actor="http://www.aortarelease.nl/actor/zim" soap:mustUnderstand="1">
<saml:Assertion ...>
<saml:Issuer>SamlIssuer</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
...
</ds:SignedInfo>
<ds:SignatureValue>Wuwn...5e4=</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyName>e37ee2522de410c633b3700835727ebf1834cd88</ds:KeyName>
</ds:KeyInfo>
</ds:Signature>
... Zie paragraaf 2.3 Inhoud ...
</saml:Assertion ...>
</wss:Security>
</soap:Header>
<soap:Body>
...
</soap:Body>