Skip to main content
Skip table of contents

Autorisatie Server Interfaces - 0.7.x

Common Interfaces

AS Metadata Interface

Metadata

AOF.AS-I.MTD.200.v1

De metadata van de autorisatieserver kan, conform RFC 8414, worden opgehaald op een well-known URL die kan worden geconstrueerd m.b.v. de  <iss> claim uit het token (zie ook section-3.1 van RFC8414). Dit betekent dat bij een iss die gelijk is aan: https://FQDN/some-path-extension, de metadata kan worden verkregen bij: https://FQDN/.well-known/oauth-authorization-server/some-path-extension.

De Authorization Server Metadata Response bevat de volgende attributen.

AOF.AS-I.MTD.300.v1

Autorisatie Server MedMij:

  • issuer;
  • authorization_endpoint;
  • token_endpoint;
  • jwks_uri;
  • response_types_supported;
  • signed_metadata.

AOF.AS-I.MTD.400.v1

Autorisatie Server ZA:

  • issuer;
  • token_endpoint;
  • jwks_uri;
  • response_types_supported;
  • signed_metadata.

De response die wordt geretourneerd bevat daarnaast de volgende headers:

Cache-Control: must-revalidate, max-age=<max-age-metadata>
Pragma: no-cache

Een client mag verkregen metadata conform de Cache-Control header directives, zoals beschreven in RFC 7234, cachen.

De waarde van max-age-metadata is configureerbaar in de autorisatie server. Initiële waarde is 14400 seconden (4 uur).

JWKS

AOF.AS-I.MTD.300.v1

De public key waarmee de digitale handtekening kan worden gecontroleerd wordt als een JWK beschikbaar gesteld. De URL waarop de JWK Set kan worden opgevraagd (jwks_uri) maakt deel uit van de AS metadata response. Iedere JSON Web Key (JWK) in de set, die beschikbaar wordt gesteld op de jwks_uri, bevat een kid parameter. De juiste JWK in de JWK Set wordt gevonden o.b.v. de waarde van het kid attribuut in de header van de ontvangen JWT.

De response die wordt geretourneerd na een HTTP GET op de jwks_uri bevat naast de JWK Set de volgende headers:

Cache-Control: must-revalidate, max-age=<max-age-jwks>
Pragma: no-cache

Een client mag verkregen JWK's conform de Cache-Control header directives, zoals beschreven in RFC 7234, cachen.

De waarde van max-age-jwks is configureerbaar in de autorisatie server. Initiële waarde is 14400 seconden (4 uur).

De JWK bevat de volgende attributen, waar de definitie van de attributen kan worden gevonden in RFC 7517 en RFC 7518:

  • "kty":"RSA"
  • "alg":"RS256"
  • "use":"sig"
  • "kid":"<the identifier of the key-pair used to sign this JWT>"
  • "x5c":"<de van toepassing zijnde keten van PKIX certificaten>"
  • "n":"<the modulus value for the RSA public key>"
  • "e":"<the exponent value for the RSA public key>"

AORTA Token Interface

Middels deze interface kunnen AORTA access_tokens worden verkregen.

AOF.AS-I.ATI.100.v1

Bij iedere interactie die wordt geboden op de AORTA Token Interface, wordt in ieder HTTP-request, op de volgende wijze, een custom HTTP header meegezonden:

AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>

MedMij Token Exchange

De MedMij Token Exchange Interface is gebaseerd op OAuth token exchange.

AOF.AS-I.MTE.100.v1

Het MedMij Token Exchange endpoint is slechts benaderbaar voor de MedMij-in component van de resource broker.

AOF.AS-I.MTE.200.v2

De autorisatieserver ontvangt een token exchange request met de volgende attributen:

ParameterCardinaliteitToelichting
grant_type1..1Vaste waarde "urn:ietf:params:oauth:grant-type:token-exchange".
audience1..1

Waarde is "<appID van GBZ-applicatie>".

Formaat: "urn:oid:2.16.840.1.113883.2.4.6.6.<applicatie-id>".

requested_token_type 1..1Vaste waarde "urn:ietf:params:oauth:token-type:jwt".
subject_token1..1Het ontvangen MedMij access_token.
subject_token_type  1..1Type aanduiding van het subject_token. Vaste waarde "urn:ietf:params:oauth:token-type:access_token".
scope1..1

Een string met daarin de gevraagde scope van autorisatie, die bestaat uit de volgende opeenvolgende delen, van elkaar gescheiden door een "~":

  • Een door spaties van elkaar gescheiden set van AORTA interaction-id's, bijvoorbeeld "search:Appointment:1.0:request";
  • De gegevensdienst, waarbinnen de interacties plaatsvinden, bijvoorbeeld "medmij.gegevensdienst.53".

Wanneer een transformatie is vereist voor een interactie, dan wordt dit in de scope aangegeven door het interactie-id uit te breiden met "/<transformation-id>".

Voorbeelden scope:

  • Opvragen van specifieke resources bij een GBZ-applicatie: "search:Coverage:1.0:request search:Patient:1.0:request~medmij.gegevensdienst.48".
  • Aanmaken van resource bij een GBZ-applicatie, waarvoor transformatie is vereist: "create:Observation:1.0:request/1~medmij.gegevensdienst.53".


De autorisatieserver retourneert een token exchange response met de volgende attributen:

ParameterCardinaliteitToelichting
access_token1..1

Een JWT-based AORTA access_token.

issued_token_type 1..1Type aanduiding van de representatievorm van het uitgegeven access_token. Vaste waarde "urn:ietf:params:oauth:token-type:jwt".
token_type 1..1Vaste waarde "Bearer".
expires_in 1..1Geldigheid in seconden van het uitgegeven AORTA access_token, deze moet in overeenstemming zijn met de geldigheid van het ingewisselde MedMij access_token.
scope 1..1Dezelfde string, zoals ontvangen in het token exchange request.
authenticatie_token 1..1

De DigiD SAML-Assertion, die wordt gecodeerd met behulp van base64urlconform RFC 4648.

client_id1..1Het ID van de PGO Server waaraan het MedMij access_token is uitgereikt.

Te hanteren error responses zijn eveneens beschreven in RFC 8693.

AORTA Token Exchange

De AORTA Token Exchange Interface is gebaseerd op OAuth token exchange.

AOF.AS-I.ATE.100.v2

Het AORTA Token Exchange endpoint is slechts benaderbaar voor de ZA-in component van de resource broker en voor GBx-applicaties die deel uitmaken van AORTA.

AOF.AS-I.ATE.200.v3

De autorisatieserver ontvangt een token exchange request met de volgende attributen:

ParameterCardinaliteitToelichting
grant_type1..1Vaste waarde "urn:ietf:params:oauth:grant-type:token-exchange"
client_id0..1

Het appID van de client die een FHIR-interactie wil initiëren. Hoeft slechts te worden meegezonden, wanneer het niet is opgenomen in het actor_token. Vooralsnog daarom slechts van toepassing voor interacties vanuit een GBP.

Formaat: "urn:oid:2.16.840.1.113883.2.4.6.6.<applicatie-id>".

audience1..1

Bij geadresseerde interacties tussen GBZ'en:

Waarde is "<appID van GBZ-applicatie>".

Wanneer de client een FHIR-update of een FHIR-read interactie wil uitvoeren, dan is het juiste appID opgenomen in de base-URL van de betreffende resource instance, zoals eerder ontvangen. Instance-level interacties, zoals een read en een update dienen altijd te worden gericht aan één GBZ-applicatie, en nooit aan een URA.

Wanneer de client een ander soortige FHIR-interactie wil uitvoeren, dan zijn er een aantal mogelijkheden:

  1. De client bepaalt zelf, m.b.v. de systeemrollen en conformances, zoals gevonden in ZORG-AB, en m.b.v. de transformatie server metadata, welk(e) GBZ-applicatie(s), eventueel na translatie, de betreffende interactie kan/kunnen ontvangen.
  2. De client vraagt de Adressering Server, welk(e) GBZ-applicatie(s), eventueel na translatie, de betreffende interactie kan/kunnen ontvangen.

Bij interacties tussen een GBZ-applicatie en een Resource Broker component:

Waarde is "<role van betreffende Resource Broker component>".


Formaat van een appID: "urn:oid:2.16.840.1.113883.2.4.6.6.<applicatie-id>".

Formaat van een URA: "urn:oid:2.16.528.1.1007.3.3.<URA>".

Formaat van een role: "urn:oid:2.16.840.1.113883.2.4.3.111.8.<role-id>"

requested_token_type 1..1Vaste waarde "urn:ietf:params:oauth:token-type:jwt".
subject_token1..1

A security token that represents the identity of the party on behalf of whom the request is being made. Typically, the subject of this token will be the subject of the security token issued in response to the request.

Wanneer geen actor_token aanwezig is, dan is het subject_token een AORTA SAML transactietoken, een SAML PKIo Authenticatietoken, een SAML DigiD token.

Wanneer wel een actor_token aanwezig is, dan is het subject token een AORTA SAML mandaattoken.

subject_token_type  1..1Type aanduiding van het subject_token. Vaste waarde "urn:ietf:params:oauth:token-type:saml2". Geeft aan dat het token een base64url-encoded SAML 2.0 Assertion is.
actor_token0..1

A security token that represents the identity of the acting party. Typically, this will be the party that is authorized to use the requested security token and act on behalf of the subject.

Een actor_token is slechts aanwezig wanneer de acting party een andere is dan het subject.

Een actor_token is altijd een AORTA SAML transactietoken. Het subject_token is in dat geval dan een AORTA SAML mandaattoken.

actor_token_type0..1Type aanduiding van het actor_token. Vaste waarde "urn:ietf:params:oauth:token-type:saml2". Geeft aan dat het token een base64url-encoded SAML 2.0 Assertion is.
registration_token0..1

Het registration_token is een AORTA SAML inschrijftoken.

registration_token_type0..1Type aanduiding van het registration_token. Vaste waarde "urn:ietf:params:oauth:token-type:saml2". Geeft aan dat het token een base64url-encoded SAML 2.0 Assertion is.
consent_token0..1Het consent_token is een AORTA SAML consent_token.
consent_token_type0..1Type aanduiding van het consent_token. Vaste waarde "urn:ietf:params:oauth:token-type:saml2". Geeft aan dat het token een base64url-encoded SAML 2.0 Assertion is.
scope1..1

Een string met daarin de gevraagde scope van autorisatie, die bestaat uit de volgende opeenvolgende delen, van elkaar gescheiden door een "~":

  • Een door spaties van elkaar gescheiden set van AORTA interaction-id's, bijvoorbeeld "search:Appointment:1.0:request";
  • De contextCode, waarbinnen de interacties plaatsvinden, bijvoorbeeld "aorta.contextcode.BGZ";
  • Een aanduiding van de situatie waarin de interactie plaatsvindt, "normaal" of "nood". Vooralsnog is deze parameter gevuld met vaste waarde "normaal".

Voorbeelden scope:

  • Opvragen van specifieke resources bij een GBZ-applicatie: "search:Coverage:1.0:request search:Patient:1.0:request~aorta.contextcode.BGZ~normaal".
  • Opvragen van loggegevens bij RB VnC: "search:AuditEvent:1.0:request~aorta.contextcode.LOGOPV~normaal".
  • Aanmelden/bijwerken ACT/VWI: "update:DocumentManifest:1.1:request~aorta.contextcode.VWIREG~normaal".
  • Aanvragen ACT/VWI-sync: "create:Task:2.0:request~aorta.contextcode.ACTSYNC~normaal".


Mogelijke combinaties van subject_token, actor_token, registration_token en consent_token zijn:

Initiatorsubject_tokenactor_tokenregistration_tokenconsent_token
GBZAORTA SAML transactie_token, gesigned met een UZI-pas (zorgverlenerspas)--Aanwezig wanneer de initiator een "notified-pull" uitvoert.
AORTA SAML mandaat_token, gesigned met een UZI-pas (zorgverlenerpas)AORTA SAML transactie_token, gesigned met een UZI-pas (zorgverlenerspas of medewerkerpas op naam)-
AORTA SAML transactie_token, gesigned met een UZI-servercertificaat-Aanwezig.
AORTA SAML inschrijf_token, gesigned met een UZI-pas (zorgverlenerpas)-
GBKSAML PKIo Authenticatietoken---
GBPSAML DigiD token---


Voorbeeld van een token exchange request:

POST [base]/token
Content-Type: application/x-www-form-urlencoded
AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&audience=urn%3Aoid%3A2.16.840.1.113883.2.4.6.6.352
&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Ajwt
&subject_token=<base64url-encoded SAML Assertion>
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Asaml2
&actor_token=<base64url-encoded SAML Assertion>
&actor_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Asaml2
&registration_token=<base64url-encoded SAML Assertion>
&registration_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Asaml2
&consent_token=<base64url-encoded SAML Assertion>
&consent_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Asaml2
&scope=search%3ACoverage%3A1.0%3Arequest%20search%3APatient%3A1.0%3Arequest~aorta.contextcode.BGZ~normaal


Een token exchange response bevat de volgende attributen:

ParameterCardinaliteitToelichting
access_token1..1

Een JWT-based AORTA access_token. Er wordt één token uitgegeven met een audience element voor ieder te bevragen xIS van deze zorgaanbieder, die om kan gaan met het requested_token_type.

issued_token_type 1..1Type aanduiding van de representatievorm van het uitgegeven access_token. Vaste waarde "urn:ietf:params:oauth:token-type:jwt".
token_type 1..1Vaste waarde "Bearer".
expires_in 1..1

Geldigheid in seconden van het uitgegeven AORTA access_token. Deze bedraagt 20 seconden.

scope 1..1

Dezelfde string, zoals ontvangen in het token exchange request, maar met daarin slechts de onderdelen die daadwerkelijk zijn toegekend.

Wanneer een transformatie is vereist voor een interactie, dan wordt dit in de geretourneerde scope aangegeven door het interactie-id uit te breiden met "/<transformation-id>".

Voorbeelden van een geretourneerde scope:

  • Opvragen van specifieke resources bij een GBZ-applicatie: "search:Coverage:1.0:request search:Patient:1.0:request~aorta.contextcode.BGZ~normaal".
  • Opvragen van resource bij een GBZ-applicatie, waarvoor transformatie is vereist: "search:Appointment:1.0:request/3~aorta.contextcode.AFSPROPV~normaal".

Te hanteren error responses zijn eveneens beschreven in RFC 8693.


Voorbeeld van een token exchange response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
    "access_token": "2YotnFZFEjr1zCsicMWpAA",
    "issued_token_type": "urn:ietf:params:oauth:token-type:jwt",
    "token_type": "Bearer",
    "expires_in": 20,
    "scope": "search:Appointment:1.0:request/3~aorta.contextcode.AFSPROPV~normaal"
}


AS-Logging Interface

AOF.AS-I.ALI.150.v1

Logbestanden die nodig zijn voor de managementrapportages kunnen, conform gemaakte afspraken in het DAP, middels een API, via HTTPS (TLS) door VZVZ-beheer worden opgehaald. Technisch formaat van de logbestanden is JSON.

De logging kan desgewenst worden opgesplitst in meerdere JSON-bestanden. Ieder JSON-bestand heeft wel altijd betrekking op interacties die plaats hebben gevonden conform één specifieke MedMij-release. Op deze manier kan in de rapportages een beeld worden gecreëerd van het gebruik van een bepaalde MedMij-release in de tijd.

De loggegevens die beschikbaar moeten worden gesteld zijn hieronder per interface van de Autorisatie Server beschreven.

Logging m.b.t. de MedMij Autorisatie Interface

AOF.AS-I.ALI.200.v1

Ontvangen authorization requests en de bijbehorende geretourneerde authorization responses of error responses:

  • timestamp ontvangst
  • sessie-id
  • zorgaanbiedernaam
  • gegevensdienst-id's en bijbehorende gegevensdienstnamen
  • client_id en organisatienaam
  • timestamp tonen landingspagina
  • timestamp redirect naar PGO Server
  • een hash van de geretourneerde authorization code
  • geretourneerde HTTP statuscodes en error-codes

Verzonden ZAB requests en de bijbehorende ontvangen ZAB responses of error responses:

  • timestamp verzending
  • sessie-id
  • zorgaanbiedernaam
  • timestamp ontvangst response
  • ontvangen statuscode van ZAB
  • ontvangen URA
  • alle ontvangen appID's
  • ontvangen error-codes

Authenticatie gebruiker:

  • sessie-id
  • timestamp redirect naar DigiD
  • timestamp gebruiker terug van DigiD
  • ontvangen statuscode van DigiD

Verzonden artefact resolve berichten en de bijbehorende geretourneerde artefact responses of error responses:

  • timestamp verzending
  • sessie-id
  • timestamp ontvangst response
  • status uit artefact response
  • status van de ontvangen SAML-Assertion (duidt mogelijk op mis-use-case)
  • ontvangen error-codes (duidt mogelijk op mis-use-case

Logging m.b.t. de MedMij User Interface

AOF.AS-I.ALI.300.v1

Getoonde toestemmingspagina's en verleende of geweigerde toestemmingen:

  • timestamp tonen
  • sessie-id
  • timestamp ontvangst keuze
  • resultaat (toestemming of weigering)

Logging m.b.t. de MedMij Token Interface

AOF.AS-I.ALI.400.v1

Ontvangen access token requests en de bijbehorende geretourneerde access token responses of error responses:

  • timestamp ontvangst
  • sessie-id
  • een hash van de ontvangen authorization code (wel zodanig dat deze kan worden gebruikt om een token request te relateren aan een authorization request)
  • timestamp retour
  • de jti claim van het geretourneerde access token
  • geretourneerde gegevensdienst-id's (in scope attribuut)
  • geretourneerde HTTP statuscodes en error-codes

Logging m.b.t. de MedMij Introspection Interface (wordt uitgefaseerd met Resource Server v1)

AOF.AS-I.ALI.500.v1

Ontvangen introspection requests en de bijbehorende geretourneerde introspection responses of error responses:

  • timestamp ontvangst
  • sessie-id
  • de jti claim van het access token
  • timestamp retour
  • status token (actief of niet)
  • geretourneerde HTTP statuscodes en error-codes

Logging m.b.t. de AORTA Token Interface - MedMij Token Exchange

AOF.AS-I.ALI.600.v1

Ontvangen token exchange requests en de bijbehorende geretourneerde token exchange responses of error responses

  • sessie-id
  • Inhoud van het ontvangen request
    • timestamp
    • de jti claim van het subject_token
    • subject_token_type
  • Inhoud van de geretourneerde response
    • timestamp
    • de jti claim van het geretourneerde AORTA access_token
    • token_type
    • geretourneerde HTTP statuscodes en error-codes

Logging m.b.t. de AORTA Token Interface - AORTA Token Exchange

AOF.AS-I.ALI.700.v1

Volgt in een latere versie van AoF.

MedMij Interfaces

AOF.AS-I.MMI.100.v1

De autorisatieserver biedt een aantal MedMij interfaces. De autorisatieserver ondersteunt hierbij de volgende MedMij use cases:

  • UC Verzamelen;
  • UC Delen.

MedMij User Interface

AOF.AS-I.MMI.200.v1

Zie MedMij User Interface.

MedMij Autorisatie Interface

AOF.AS-I.MMI.300.v1

De autorisatieserver biedt de Authorization interface, zoals gespecificeerd in de te ondersteunen releases van het MedMij afsprakenstelsel. 

MedMij Token Interface

AOF.AS-I.MMI.400.v1

De autorisatieserver biedt het Token interface, zoals gespecificeerd in de te ondersteunen releases van het MedMij afsprakenstelsel.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.