Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

De value van de resource-origin parameter is altijd een comma-separated lijst van logical Device ids. In het geval van een GRANTED permissie kunnen hier dus meerdere waarden staan.

De FHIR resource service autoriseert elke binnenkomende CRUD request. Elke request MOET minimaal de volgende logica uitvoeren voor de autorisatie:

Image Removed

Wanneer een request binnenkomt kan de volgende informatie opgehaald worden:

...

Bijvoorbeeld bij een create van een Patient  zijn de volgende scopes valide (in de onderstaande voorbeelden is de logical id van de resource-origin 3a2c98b5-298e-4f95-ab21-077d6b2d2dcc, deze wordt niet gevalideerd aangezien de resource-origin altijd gezet wordt door de FHIR resource service op een create):

...

Mag alle acties uitvoeren op Patient resources met resource-origin Device/3a2c98b5-298e-4f95-ab21-077d6b2d2dcc

...

Zoek een permissie op in de access_token.scope bij de geauthoriseerde applicatie-instantie aan de hand van de logical id van de resource-origin, de <action> en <resource_type>. Bijvoorbeeld: voor een UPDATE op een ActivityDefinition met resource-origin Device/3a2c98b5-298e-4f95-ab21-077d6b2d2dcc kan gezocht worden middels een match op de volgende reguliere expressie:

Code Block
system\/(?:ActivityDefinition|\*)\.c?r?ud?s?(?:\?[a-z0-9-=&]*resource-origin=3a2c98b5-298e-4f95-ab21-077d6b2d2dcc|(?=\s|$))

Image Removed
Deze regex dwingt af dat er een u voorkomt bij de action. Daarnaast moet OF de resource-origin voorkomen, of GEEN parameter gezet zijn. Dit laatste impliceert een ALL op permissie scope.

Info

De action karakters zijn volgorderlijk c, r, u, d en s. system/ActivityDefinition.crdus is dus NIET valide. 

...

Het autoriseren MOET a.d.h.v. de scope op het access_token plaatsvinden. Binnen Koppeltaal MOET de resource-origin parameter op alle scopes gezet worden die geen ALL permissie hebben. De waarde van deze parameter MOET comma-separated zijn indien er meer dan één resource-origin toegestaan is.

Autoriseren van een "Read all" request

Wanneer een applicatie-instantie geen specifieke instantie van een resource opvraagt, maar zoekt naar bijv. alle Patient resources, dient de resource-origin value gebruikt te worden voor Search Narrowing. Deze wordt later in het document toegelicht.

Autoriseren van een resource instantie request

Alle niet-"read all"-requests betreffen (binnen Koppeltaal) altijd een CRUD-operatie op een enkele instantie van een resource. Indien het geen create betreft, betreft het ook altijd een bestaande resource. Er is dan altijd een resource-origin extensie aanwezig. De FHIR resource service MOET nagaan of de applicatie-instantie toegang heeft tot deze resource n.a.v. de resource type, actie en de resource-origin van de bestaande resource. Indien de gebruiker geen toegang heeft MOET er geantwoord worden met een HTTP code 403.

Search Narrowing

Wanneer alle resources opgehaald worden voor een specifiek type, bijv. GET /Patient, mogen enkel de resources teruggegeven worden waar de applicatie-instantie leesrechten op heeft. Dit wordt door de FHIR resource service opgelost middels een interceptor pattern. De oplossing dient de huidige query-parameters te filteren en uit te breiden in het geval dat de permissie scope niet ALL is.

...