Op basis van gedefinieerde toegangsregels kan al dan niet toegang verleend worden aan een Client Application (applicatie instantie) die daar om verzoekt. Hierbij worden achtereenvolgens de volgende stappen doorlopen:
...
Het registreren en vragen tot toegang tot een dienstverlener of bij Koppeltaal de FHIR (Resource) Provider bestaat uit de volgende stappen:
- De client (applicatie-instantie) MOET zich (dynamisch) registreren om voor elke instantie een afzonderlijke en unieke "Client_ID" te verkrijgen (zie stappen 1 en 2). Client registratie KAN worden voltooid door ofwel statische configuratie (out-of-band, via een beheerder, etc.) of dynamisch. De client (applicatie-instantie) MOET een unieke publieke en geheime sleutelpaar genereren, en de jwks_uri (referentie naar de sleutelpaar) of publieke sleutelwaarde registreren bij de Autorisatie Server registreren. Zie RFC-7517.
- Het verkrijgen van een toegangstoken door een token verzoek te sturen naar de Autorisatie Server, die het verzoek van de consument verifieert met behulp van een JWT (JSON Web Token) of identiteitsbewijs (zie stappen 3 en 4)
- Zodra de client (applicatie-instantie) het toegangstoken verkregen heeft kan deze (her)gebruikt worden, tot het toegangstoken verlopen is, voor elke serviceverzoek aan de FHIR Resource Provider (zie stappen 5 en 6). Nadat het toegangstoken verlopen is, moet men opnieuw een toegangstoken opvragen.
De URL's gebruikt in de PoC:
...
Autorisatie Server Interface
- Metadata van de Autorisatie Server is via publiek internet benaderbaar. Metadata kan conform RFC-8414 worden opgehaald, op een bekende URL, die herleid kan worden m.b.v. de '
iss
' claim uit het token (zie ook section-3.1 van RFC8414). - De Authorization Server Metadata Response bevat o.a. de volgende attributen:
- issuer;
- token_endpoint;
- token_endpoint_auth_signing_alg_values_supported;
- jwks_uri;
- scopes_supported
Zie ook gerelateerde topics:
CapabilityStatement (eHealth Mogelijkheden) - [review]
TOP-KT-016 - SMART on FHIR Conformiteit
JWKS
De public key waarmee de digitale handtekening kan worden gecontroleerd wordt conform RFC-7517, als een JWK beschikbaar gesteld. De URL van waarop de JWK Set kan worden opgevraagd (jwks_uri) maakt deel uit van de Autorisatie Server 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.
...
BELANGRIJK: In bovenstaand voorbeeld willen we kunnen zoeken op Device.resource-origineorigin. In bovenstaand voorbeeld op "AutorisatieServer_id". Indien we naar de (huidige) zoekparameters van Device kijken, is er geen parameter gedefinieerd die deze extensie selecteert. Hiervoor moet een nieuwe searchParameter worden gedefinieerd. Alleen de FHIR (Resource) Provider MOET automatisch een SearchParameter toevoegen voor deze extensie, als deze nog niet bestaat. De extensie meegeven op een POST MOET in een foutmelding resulteren. De extensie MOET altijd mag meegegeven worden op een PUT en mag dan NIET aangepast worden. Als de resource-origin niet aanwezig is in de PUT, dan zal KT deze zelf toevoegen. Indien er een aanpassing op de extensie wordt uitgevoerd resulteert dit in een foutmelding.
...
Authenticatie JWT Header waarden | ||
---|---|---|
alg | vereist | RS512 |
typ | vereist | Vaste waarde: JWT . |
kid | optioneel | Hier wordt aangegeven welke sleutel is gebruikt om de JWS te beveiligen. Met deze parameter kan de initiator expliciet een sleutelwijziging signaleren naar de ontvanger. |
Authenticatie JWT Claims | ||
---|---|---|
iss | vereist | Issuer of uitgever van de JWT - de client_id van de client, zoals bepaald tijdens de registratie bij de Autorisatie Server. |
sub | vereist | De (technische) identifier van de gebruiker. Bij een applicatie is dit de |
aud | vereist | De Autorisatie Server "token URL" (De zelfde URL waar de JWT naar gestuurd wordt, zie volgend voorbeeld). |
iat | vereist | Tijdstempel voor wanneer de JWT is aangemaakt. |
exp | vereist | Verlooptijdstip voor verificatie van de JWT, uitgedrukt in seconden sinds het "tijdvak" (1970-01-01T00:00:00Z UTC). Deze tijd MAG in de toekomst niet meer dan vijf minuten duren. |
jti | vereist | Een nonce-tekenreekswaarde die deze verificatie-JWT uniek identificeert. |
...
- Resource context. Een (gebruikers) context waarin rechten worden aangevraagd: user (een geauthentiseerde gebruiker), patiënt (beperkt tot een geïdentificeerde patiënt) of system (geauthentiseerd systeem)
- Resource type. Een FHIR resource type, die bij naam benoemd wordt
- Rechten. Rechten die met lezen (ook historische gegevens) en/of schrijven (ook het verwijderen van gegevens) te maken hebben op een instantie van een resource . '*' is lezen en schrijven.
...
- .
Service (interactie met FHIR Resource Provider) (stap 5 en 6)
...