AORTA on FHIR specificaties

SAML AORTA contracttoken

Structuur

Het SAML contracttoken bestaat uit een digitale SAML assertion waarmee een contractuele relatie tussen twee partijen cryptografisch wordt vastgelegd. Dit token is ondertekend door partij A en vormt de bevestiging van het vooraf uitgegeven concept-contracttoken, dat eerder door partij B is ondertekend.

Het concept-contracttoken is eveneens een SAML assertion en bevat dezelfde structurele elementen als het uiteindelijke contracttoken. Enkele specifieke kenmerken en verschillen worden hieronder toegelicht.

Verschillen tussen concept-contracttoken en contracttoken

Hoewel beide tokens qua structuur vrijwel identiek zijn, gelden de volgende verschillen:

  • Issuer:

    • In het concept-contracttoken is de issuer de FQDN (Fully Qualified Domain name) uit het SubjectAltName (SAN) uit het certificaat van de service provider van partij B (de contractnemer).

    • In het contracttoken is de issuer de SubjectAltName.otherName.<Subject ID> uit het certificaat van de service provider van partij A (de contractgever). Het <Subject ID> is een samengesteld veld bij de contractgever, bestaande uit door een '-' gescheiden velden:
      <Subject ID> = <versie-nr>-<UZI-nr>-S-<URA>-<rol>-<AGB-code>. De contractgever heeft een URA (abonneenummer) van een geregistreerde zorgaanbieder.

  • Subject:

    • Het subject is in beide gevallen de SubjectAltName van de tegenpartij:

      • In het concept-token dus de URA van partij A,

      • In het contracttoken de FQDN van partij B.

    • [Toelichting: dit is dus formeel gezien geen verschil in structuur, maar een logisch spiegelbeeld in rollen.]

Certificering en ondertekening

  • Het concept-contracttoken wordt ondertekend met het servercertificaat van partij B:

    • Dit betreft een Private PKIo-servercertificaat zoals opgenomen in Certificaten | VZVZ. Deze certificaten bevestigen dat een domein toebehoort aan een organisatie die bij een Kamer van Koophandel (of equivalent) geregistreerd is.

  • Het contracttoken wordt ondertekend met het UZI-servercertificaat van partij A (geregistreerd zorgaanbieder). UZI-servercertificaten worden beheerd door de UZI-registerorganisatie, die valt onder de verantwoordelijkheid van CIBG, een onderdeel is van VWS.

Assertion

De SAML assertion heeft de volgende structuur (de waarden die in het token gebruikt worden zijn fictief):

Element/@Attribute

0..1

Omschrijving

Element/@Attribute

0..1

Omschrijving

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

Concept-contracttoken: De Subject Alternative Name (SAN) van de te contracteren partij (partij B). Dit is de FQDN.

Contracttoken: De Subject Alternative Name van de contractnemer (partij A). Dit is de URA.

       @NameQualifier

0

Niet gebruiken

       @SPNameQualifier

0

Niet gebruiken

       @Format

1

Vaste waarde: 'urn:oasis:names:tc:SAML:2.0:nameid-format:entity'

       @SPProviderID

0

Niet gebruiken

Signature

1

Het contracttoken wordt ondertekend met het UZI-servercertificaat van partij A (geregistreerd zorgaanbieder). UZI-servercertificaten worden beheerd door de UZI-registerorganisatie, die valt onder de verantwoordelijkheid van CIBG, een onderdeel is van VWS.

Het concept-contracttoken wordt ondertekend met het servercertificaat van partij B. Dit betreft een private PKIo-servercertificaat.

Het servercertificaat wordt als X.509-certificaat opgenomen in de Signature, zodat de ontvanger de ondertekening kan verifiëren.

       KeyInfo

 

Informatie over de publieke sleutel en certificaat van beide tokens

              X509Data

 

informatie over het X.509-certificaat staat dat gebruikt is voor de digitale handtekening.

                    X509Certificate

 

Het base64-gecodeerde certificaat waarmee het token is ondertekend

Subject

1

Subject Alternative Name van de tegenpartij:

  • concept-contracttoken: Subject Alternative Name van partij A;

  • contracttoken: Subject Alternative Name van partij B.

       BaseID

0

Niet gebruiken

       NameID

1

Bevat de Subject Alternative Name. URA of FQDN.

       EncryptedID

0

Niet gebruiken

       SubjectConfirmation

1

Moet aanwezig zijn.

              @Method

1

Vaste waarde: 'urn:oasis:names:tc:SAML:2.0:cm:sender-vouches’

SubjectConfirmationData

0

We maken niet gebruik van dit veld omdat dit veld gebruikt wordt als aanvullende informatie voor het bevestigen van de identiteit van de “Subject” (de tegenpartij), maar niet de ondertekende partij of diens certificaat.

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..*

Meerdere audience zijn toegestaan.

Vaste waarde: 'urn:generic:audience'

       ProxyRestriction

0

Niet gebruiken

Advice

0

Niet gebruiken

AuthnStatement

1

Moet aanwezig zijn

       @AuthnInstant

1

Tijdstip van aanmaak.

    @SessionIndex

0

Niet gebruiken

       AuthnContext

1

Moet aanwezig zijn

              AuthnContextClassRef

1

Vaste waarde: 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509'

AttributeStatement

1

Moet aanwezig zijn

    Attribute

0..1

Optioneel aanwezig; alleen in contracttoken.

        @Name

1

Vaste waarde: '_CTR_locatie'

    AttributeValue

0..1

De URL naar het Contracttokenregister

    Attribute

1

Moet aanwezig zijn in beide tokens

        @Name

1

Vaste waarde: '_FQDN'

    AttributeValue

1

Fully Qualified Domain Name van de tegenpartij

    Attribute

1

Moet aanwezig zijn alleen in contracttoken.

        @Name

1

Vaste waarde: '_Concept-contract_token'

    AttributeValue

1

Base64 representatie van het Concept-Contracttoken, aanwezig in het contracttoken

    Attribute

0..1

Optioneel in contracttoken.

        @Name

1

Vaste waarde: '_AC'

    AttributeValue

1

Bevat een X.509 Attribute certificate

    Attribute

0..1

Optioneel in beide tokens

        @Name

1

Vaste waarde: '_Scope'

    AttributeValue

1

Bevat de scope (dienst) van het contract

Attribute

1

Verplicht in beide tokens

        @Name

1

Vaste waarde: 'urn:zorg:tokenType'

    AttributeValue

1

Afhankelijk van het type token een vaste waarde: 'contracttoken' of 'conceptcontracttoken'

Attribute

0..1

 

        @Name

1

Vaste waarde: '_Contractterms'

    AttributeValue

1

URI

N.B.: bovenstaande tabel bevat de meest gebruikte elementen van SAML assertions en is derhalve niet volledig. Voor niet genoemde elementen geldt: Niet gebruiken.