...
De assertion heeft de volgende structuur (de waarden die in het token gebruikt worden zijn fictief):
Code Block |
---|
<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> |
Namespaces
Het door een vertrouwde Identity Provider afgegeven SAML authenticatietoken dat gebruikt wordt bij berichtauthenticatie, maakt gebruik van de volgende namespaces. De prefixen zijn niet normatief maar worden in dit document als voorbeelden gebruikt.
Tabel AORTA.STK.t3400 - Namespaces
...
Op de plaats van de drie punten (…) worden Uniekheidattributen opgenomen ten aanzien van de Assertion. Deze attributen worden beschreven in paragraaf 2.3.1 Uniekheid.
Uniekheid
Code Block |
---|
<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".
Onderwerp
Code Block |
---|
<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.
...
Voor deze bevestigingsmethode (het Method attribuut) moet de URN waarde "urn:oasis:names:tc:SAML:2.0:cm:bearer" (assertion drager) worden gebruikt.
Geldigheid
Code Block |
---|
<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).
...
De subelementen OneTimeUse en ProxyRestriction worden niet gebruikt binnen het <Conditions> element bij Berichtauthenticatie met DigiD.
Afzender
Code Block |
---|
<saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"> |
...
https://federatie.overheid.nl/aselectserver/server/ |
...
</saml:Issuer> |
De afzender is de authenticatie autoriteit (DigiD) die de assertion heeft afgegeven en de patiënt heeft geauthenticeerd. De Issuer wordt in dit fictieve voorbeeld uitgedrukt met behulp van een URL.
...
Het goed beheerd patiëntenportaal past een TLS-sessie toe bij het opvragen van de assertion bij de identity provider.
Ontvanger
Code Block |
---|
<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.
Authenticatie
Code Block |
---|
<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.
...
Bij communicatie tussen de computer van de patiënt en het patiëntenportaal mag het adres van de computer van de patiënt tijdens een sessie niet wijzigen. Bij wijziging van het adres (Address attribuut) tijdens de sessie in de SubjectLocality, wordt dit als malafide activiteit aangemerkt en wordt de sessie beëindigd en is herauthenticatie vereist. |
Code Block |
---|
<saml:AuthnContext> |
...
<saml:AuthnContextClassRef> |
...
urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract |
...
</saml:AuthnContextClassRef> |
...
</saml:AuthnContext> |
Binnen de SAML specificatie is het mogelijk om een authenticatie-context (AuthnContext) mee te geven die de context aangeeft van het gebruikte authenticatiemiddel. Binnen de SAML specificatie zijn een aantal contexten gespecificeerd, zie [SAML Authn Context], die gebruikt kunnen worden als referentiekader voor communicatie tussen de ZIM en andere componenten zoals het goed beheerd 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>.
Code Block |
---|
<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.
...
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.
Code Block |
---|
<md:SPSSODescriptor WantAssertionsSigned="true" |
...
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> |
Plaats van het SAML token in het SOAP bericht.
...