Versions Compared

Key

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

...

De applicatie-instantie mag de resource-origin extensie NIET zelf zetten op een POST. De resource-origin MAG wel meegegeven worden aan een PUT. In dit geval MOET de FHIR resource server valideren dat deze ongewijzigd is. Indien de resource-origin extensie NIET gezet is in een PUT, MOET de FHIR resource service deze zetten.

Autoriseren

Voor het autoriseren wordt gebruik gemaakt van de V2 scopes uit de SMART app launch. De uitgegeven scopes hebben de volgende syntax:

Image Added

De FHIR resource service autoriseert elke binnenkomende CRUD request. Elke request MOET middels de volgende logica geautoriseerd worden:

Image RemovedImage Added

  1. Wanneer een request binnenkomt kan de volgende informatie opgehaald worden:

    InformatieHoe op te halen
    <resource_type>Dit kan bepaald worden aan de hand van de URL. De eerste waarde na de slash van de base FHIR resource service bevat altijd het Resource type. Bijvoorbeeld /Patient , /Patient/2  of /ActivityDefinition 
    <action>Dit wordt bepaald aan de hand van het type HTTP request. GET → Read, POST → Create, PUT → Update en DELETE → Delete
    <resource-origin>Indien de request geen Create betreft, gaat het altijd om bestaande resources. Deze hebben per definitie een resource-origin extensie die aangeeft wie de eigenaar van de resource is. Deze waarde MOET uit de gepersisteerde entiteit(en) gehaald worden. Wanneer een entiteit geüpdatet wordt, wordt de resource-origin  waarde dus van de te updaten versie afgehaald.


  2. Indien de <action> een create is:
    1. hoeft de resource-origin niet geverifieerd te worden. Deze mag niet zelf gezet worden, maar wordt automatisch gezet door de FHIR resource service. Daarnaast is een create permissie altijd in de context van de OWN permissie. Het is niet toegestaan om Resources namens een andere applicatie aan te maken.
    2. Zoek voor een scope in de context van <resource_type> of "*"  (all) EN action met letterlijke tekst "create" c of "*".
      1. Bijvoorbeeld bij een create van een Patient  zijn de volgende scopes valide (in de onderstaande voorbeelden is de logical id van de resource-origin  12, deze wordt niet gevalideerd aangezien de resource-origin altijd gezet wordt door de FHIR resource service op een create):

        ScopeUitleg
        12system/Patient.c(rud)ruds)?resource-origin=3a2c98b5-298e-4f95-ab21-077d6b2d2dccSpecifieke create permissie op de Patient  resource voor Device/123a2c98b5-298e-4f95-ab21-077d6b2d2dcc, optioneel mag deze ook de read, update en/of delete bevatten
        12system/*.c(rud)ruds)?resource-origin=3a2c98b5-298e-4f95-ab21-077d6b2d2dccDevice/12  3a2c98b5-298e-4f95-ab21-077d6b2d2dcc mag alle resources aanmaken, optioneel mag deze ook de read, update en/of delete bevatten
        12system/Patient.*cruds?resource-origin=3a2c98b5-298e-4f95-ab21-077d6b2d2dcc

        Device/12  mag 3a2c98b5-298e-4f95-ab21-077d6b2d2dcc mag alle acties uitvoeren op Patient  resources


  3. Indien de <action> GEEN create is, gaat het altijd om bestaande resources. Deze hebben per definitie een resource-origin extensie die aangeeft wie de eigenaar van de resource is. Haal de Resource(s) op en verifieer de resource-origin waarden.

    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/12  wordt 3a2c98b5-298e-4f95-ab21-077d6b2d2dcc  wordt gezocht middels een match op de volgende reguliere expressie:

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


    Image Added
    Deze regex dwingt af dat er een *  OF een een u  voorkomt bij de action. Rondom de u  mogen de karakters De action karakters zijn volgorderlijk c, r, u,  en d  voorkomen in een random volgorde. 12d en s. system/ActivityDefinition.crdu  crdus is dus ook NIET valide. 
  4. Indien niet aanwezig: FHIR resource service respond met een 403 Forbidden.

...

De volgende flow wordt gehanteerd:

Image RemovedImage Added

Subscription Narrowing

...

...