Skip to main content
Skip table of contents

Use Cases Autorisatie Server GTK

Overzicht Autorisatie Server GTK

Onderstaande figuur toont een overzicht van de interfaces, services en functies van de Autorisatie Server GTK component.

Autorisatie Server GTK is verantwoordelijk voor:

  • Het uitgeven van client_assertions en assertions die kunnen worden gebruikt om access_tokens aan te vragen bij andere GTK’s;

  • Het ontvangen van token requests van andere GTK’s.

image-20240604-082920.png

De services zijn toegankelijk via een geboden interface en worden beschreven in de vorm van use cases. Een service wordt altijd vervult middels één of meerdere applicatiefuncties, bijvoorbeeld TWIIN Autorisatie Server.

Uitgeven TWIIN Assertions

Primaire actor

Resource Broker GTK

Systeem

TWIIN Assertion Issuer

Secundaire actor

-

Code

AOF.UC.ASGTK.100.v1

Realiseert Feature

Issue TWIIN Assertions

Pre-condities

De primaire actor is aangesloten op het systeem.

Het systeem is slechts benaderbaar voor

  • componenten van VZVZ die zijn aangesloten via een intern netwerk of op het AORTA netwerk

Het systeem beschikt over een voldoende actueel AORTA Stelseltoken die het via de AORTA Stelsel Metadata Interface heeft verkregen.

Triggers

  • De primaire actor stuurt een request in

Main flow

Stap

Omschrijving

Uitkomst

1

Het systeem ontvangt een verzoek en start de verwerking.

2

Het systeem toetst of het verzoek voldoet aan de interface specificatie.

Ongeldig verzoek

statuscode 400 Bad Request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

3

Het systeem controleert de geldigheid van het ontvangen sourceToken:

Ongeldig token

statuscode 401 Unauthorized

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

4

Het systeem genereert, o.b.v. van de gegevens in het ontvangen sourceToken, een AORTA-TWIIN Client Authentication Assertion (client_assertion) en een AORTA-TWIIN Authorization Grant Assertion (assertion).

Let op! Indien het verzoek een authzBase bevat, dan betreft een verzoek om direct na ontvangst van een notification-Task, assertions te generen t.b.v. het verkrijgen van een workflow-Task, en dient

  • de sub in de assertion te worden gevuld met de URA uit de aud van het sourceToken;

  • de authorizer in de assertion te worden gevuld met de _vrb. _vrb_ion uit het sourceToken.

5

Het systeem bepaalt op de volgende wijze of een scope attribuut moet worden opgenomen in de response:

Indien de scope van het ontvangen AORTA access_token de string

  • “patient/Task.c?code=http://vzvz.nl/fhir/CodeSystem/aorta-taskcode|notified_pull”

bevat, dan moet als scope in de response worden opgenomen:

  • “system/Task.c?code=http://fhir.nl/fhir/NamingSystem/TaskCode|pull-notification“

In overige gevallen wordt geen scope attribuut opgenomen in de response. In deze situaties dient het AORTA access_token een _vrb._vrb_authz_base claim te bevatten. Het systeem toetst dit.

AORTA access_token mist vereiste authorization_base

statuscode 400 Bad Request

6

<exit>

Het systeem retourneert een response naar de primaire actor.

Verwerking succesvol

statuscode 200 OK

Post-condities

Het systeem heeft het verzoek op de juiste wijze verwerkt en heeft een daarbij passende response geretourneerd.

Het systeem heeft van het ontvangen request, de volgende attributen gelogd:

  • datum en tijd van ontvangst

  • request-id

  • initial-request-id

  • sender-id

    • role-id wanneer de sender van het request een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

==

Het systeem heeft voor ieder uitgaand request, dat bij het doorlopen van de use case werd verzonden, de volgende attributen gelogd:

  • datum en tijd van verzending

  • request-id

  • initial-request-id

  • receiver-id

    • role-id wanneer de receiver van het request een VZVZ component is, en de aanroep niet via HTTP geschiedt

    • FQDN wanneer de aanroep via HTTP geschiedt

Aanvullend daarop heeft het systeem van het ontvangen request de volgende attributen gelogd:

  • request.sourceTokenType

  • jti van het ontvangen AORTA access_token

  • ver van het ontvangen AORTA access_token

Het systeem heeft van de geretourneerde response, de volgende attributen gelogd:

  • datum en tijd van response

  • request-id van het bijbehorende request

  • initial-request-id van het bijbehorende request

  • receiver-id

    • role-id wanneer de receiver van de response een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

  • HTTP statuscode en eventueel geretourneerde foutinformatie

==

Het systeem heeft voor iedere response, die bij het doorlopen van de use case werd ontvangen, de volgende attributen gelogd:

  • datum en tijd van response

  • request-id van het bijbehorende request

  • initial-request-id van het bijbehorende request

  • sender-id

    • role-id wanneer de sender van de response een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

  • HTTP statuscode en eventueel geretourneerde foutinformatie

Aanvullend daarop heeft het systeem van de geretourneerde response de volgende attributen gelogd:

  • response.scope

  • jti van de geretourneerde client_assertion

  • jti van de geretourneerde assertion

Uitgeven AORTA access_token

Primaire actor

Extern GTK

Systeem

TWIIN Autorisatie Server

Secundaire actor

ZORG-AB, Autorisatie Server ZA

Code

AOF.UC.ASGTK.200.v3

Realiseert Feature

TWIIN Token Request

Pre-condities

De primaire actor is aangesloten op het TWIIN netwerk.

Het systeem is slechts benaderbaar voor

  • GTK’s die zijn aangesloten op het TWIIN netwerk

Het systeem beschikt over een voldoende actueel AORTA Stelseltoken die het via de AORTA Stelsel Metadata Interface heeft verkregen.

Triggers

  • De primaire actor stuurt een request in

Main flow

Stap

Omschrijving

Uitkomst

1

Het systeem ontvangt een verzoek en start de verwerking.

2

Het systeem toetst of het verzoek voldoet aan de interface specificatie.

Het systeem toetst of de volgende attributen aanwezig zijn en ook een juiste waarde bevatten:

  • grant_type

  • client_assertion_type

Het systeem toetst of de volgende attributen aanwezig zijn:

  • client_assertion

  • assertion

Een scope is verplicht wanneer géén assertion is opgenomen, die een autorization_base bevat. Een eventueel aanwezige authorization_base moet een SAML AORTA consent_token zijn.

Wanneer wel een consent_token aanwezig is in de ontvangen assertion, maar geen scope werd ontvangen, dan wordt de scope van het request (door AS ZA) bepaald o.b.v. de contextcode in het consent_token.

De volgende attributen worden inhoudelijk later getoetst, op het moment dat een AORTA access_token wordt gevraagd aan Autorisatie Server ZA:

  • scope

  • uit assertion: sub, authorizer, authzBase, patient, user_id, user_role

Ongeldig verzoek

statuscode 400 Bad Request, error=invalid_request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

3

Het systeem controleert de geldigheid van de ontvangen client_assertion, d.w.z.

  • de signature;

  • of de geldigheidsduur nog niet is verstreken;

  • of alle verplichtte attributen aanwezig zijn;

  • of de aud verwijst naar de AS GTK;

  • of de iss verwijst naar een vertrouwde issuer binnen TWIIN (d.w.z. of de betreffende issuer conform ZORG-AB assertions mag uitgeven namens de initiërende zorgaanbieder - omdat ZORG-AB hiervoor niet tijdig geschikt zal zijn, wordt deze check vooralsnog niet uitgevoerd).

Ongeldige client

statuscode 400 Bad Request, error=invalid_client

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

4

Het systeem controleert de geldigheid van de ontvangen assertion, d.w.z.

  • de signature;

  • of de geldigheidsduur nog niet is verstreken;

  • of alle verplichtte attributen aanwezig zijn;

  • of de aud verwijst naar de AS GTK;

  • of de iss erin verwijst naar een vertrouwde issuer binnen TWIIN (d.w.z. of de betreffende issuer conform ZORG-AB assertions mag uitgeven namens de initiërende zorgaanbieder - omdat ZORG-AB hiervoor niet tijdig geschikt zal zijn, wordt deze check vooralsnog niet uitgevoerd).

Ongeldige grant

statuscode 400 Bad Request, error=invalid_grant

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

5

Het systeem controleert de geldigheid van een eventueel ontvangen client_id, en indien van toepassing, of deze overeenkomt met de sub in de client_assertion.

Ongeldig verzoek

statuscode 400 Bad Request, error=invalid_request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

6

Het systeem toetst, m.b.v. ZORG-AB, of de primaire actor binnen het TWIIN afsprakenstelsel is gekwalificeerd, om namens de URA in de assertion, interacties te initieren zoals aangeduid door de scope van het request.

Vooralsnog moet de gehele scope worden ondersteund.

NB. omdat ZORG-AB hiervoor niet tijdig geschikt zal zijn, wordt deze check vooralsnog niet uitgevoerd. Zie ook: registratie in ZORG-AB.

Primaire actor niet gekwalificeerd

statuscode 403 Forbidden, error=access_denied, error_description="Initiërende applicatie beschikt niet over de vereiste capabilities."

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

7

Het systeem toetst, m.b.v. ZORG-AB, of de beoogde AORTA destination (GBZ-applicatie) de interacties, zoals aangeduid door de scope van het request, via Twiin wenst te ontvangen.

Vooralsnog moet de gehele scope worden ondersteund.

NB. omdat ZORG-AB hiervoor niet tijdig geschikt zal zijn, wordt deze check vooralsnog niet uitgevoerd. Zie ook: registratie in ZORG-AB.

Destination wil interactie niet via Twiin ontvangen

statuscode 403 Forbidden, error=access_denied, error_description="AORTA-deelnemer kan/wil interactie niet ontvangen via Twiin."

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

8

Indien géén authorization_base is ontvangen, dan vertaalt het systeem de ontvangen SMART-on-FHIR formaat scope naar het scope formaat, zoals vereist bij gebruik van Feature GetTokenRequest. Het systeem gebruikt hiervoor de AORTA interactietabel.

De ontvangen scope mag in deze situatie slechts gaan over het verzenden of het wijzigen van een notificatie, op de wijze zoals gespecificeerd in:

Omdat het om één of meerdere push-interacties gaat, hoeft geen contextcode te worden doorgegeven, en mag als situatie “normaal” worden gehanteerd.

Kan scope niet vertalen

statuscode 400 Bad Request, error=invalid_request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

Pull-interactie ontvangen zonder authorization_base

statuscode 400 Bad Request, error=invalid_request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

9

Indien de scope ruimer is dan slechts het verzenden of het wijzigen van een notificatie, dan toetst het systeem of de assertion een BSN bevat.

BSN van patient ontbreekt

statuscode 400 Bad Request, error=invalid_request

Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow.

10

Het systeem gebruikt Feature GetTokenRequest om een AORTA access_token te verkrijgen.

Hierbij worden de volgende attributen gebruikt:

  • client.organisationId - wordt gevuld met de sub uit de assertion

  • client.applicationId - wordt gevuld met het appID van Resource Broker GTK

  • destination.organisationId - wordt gevuld met de authorizer uit de assertion

  • scope - wordt, indien aanwezig EN geen authorization_base werd ontvangen, gevuld met de ontvangen scope

  • patient - wordt, indien aanwezig, gevuld met de patient uit de assertion

  • authzBase - wordt, indien aanwezig, gevuld met de authorization_base uit de assertion

  • user.userId - wordt gevuld met het user_id uit de assertion; indien deze leeg is of niet aanwezig, dan wordt het attribuut gevuld met de string “unknownuserviatwiin”

  • user.userRole - wordt gevuld met de user_role uit de assertion

  • user.acr - wordt gevuld met vaste waarde “urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified“.

11

<exit>

Het systeem retourneert een response naar de primaire actor.

Alle mogelijke uitkomsten van GetTokenRequest.

Post-condities

Het systeem heeft het verzoek op de juiste wijze verwerkt en heeft een daarbij passende response geretourneerd.

Het systeem heeft van het ontvangen request, de volgende attributen gelogd:

  • datum en tijd van ontvangst

  • request-id

  • initial-request-id

  • sender-id

    • role-id wanneer de sender van het request een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

==

Het systeem heeft voor ieder uitgaand request, dat bij het doorlopen van de use case werd verzonden, de volgende attributen gelogd:

  • datum en tijd van verzending

  • request-id

  • initial-request-id

  • receiver-id

    • role-id wanneer de receiver van het request een VZVZ component is, en de aanroep niet via HTTP geschiedt

    • FQDN wanneer de aanroep via HTTP geschiedt

Het systeem heeft van de geretourneerde response, de volgende attributen gelogd:

  • datum en tijd van response

  • request-id van het bijbehorende request

  • initial-request-id van het bijbehorende request

  • receiver-id

    • role-id wanneer de receiver van de response een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

  • HTTP statuscode en eventueel geretourneerde foutinformatie

==

Het systeem heeft voor iedere response, die bij het doorlopen van de use case werd ontvangen, de volgende attributen gelogd:

  • datum en tijd van response

  • request-id van het bijbehorende request

  • initial-request-id van het bijbehorende request

  • sender-id

    • role-id wanneer de sender van de response een VZVZ component is, en de aanroep niet via TLS geschiedt

    • common name wanneer de aanroep via TLS geschiedt

  • HTTP statuscode en eventueel geretourneerde foutinformatie

JavaScript errors detected

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

If this problem persists, please contact our support.