Document toolboxDocument toolbox

UCI Abonneren


Toelichting
In de platen hieronder staat het stroomdiagram van de use case-implementatie Abonneren, in vier perspectieven:

  • het totaalperspectief, met zowel de happy flow als de uitzonderingen;
  • het perspectief van de PGO Server (= OAuth Client), die onder de hoede van de Dienstverlener Persoon valt. Laatstgenoemde kan deze plaat lezen als zijn verplichte aandeel in de use case-implementatie Abonneren;
  • het perspectief van de (OAuth) Authorization Server/Subscription Server/OAuth Resource Server/Authentication Client, die onder de hoede van de Dienstverlener Zorgaanbieder valt. Laatstgenoemde kan deze plaat lezen als zijn verplichte aandeel in de use case-implementatie Abonneren;
  • het perspectief van de Zorggebruiker (= OAuth Resource Owner).

De stroomdiagrammen tonen alleen de situatie waarin alle acties slagen tot en met het uiteindelijke aangaan van het Abonnement (de zogenaamde happy flow). De drie oranje banen horen, conform de MedMij-huisstijl tot het Persoonsdomein, de twee blauwe tot het Zorgaanbiedersdomein. Menige actie in de stroomdiagrammen is gekleurd weergegeven. De lichtgrijs gekleurde acties vormen samen de autorisatieflow volgens OAuth 2; de zachtgeel gekleurde acties vormen samen de authenticatieflow. Deze kleuren verwijzen dus alleen maar naar de gebruikte standaarden en zeggen niets over welke component de stap zou moeten uitvoeren. Authenticatie is dus ingebed in autorisatie. In de stroomdiagrammen voor de specifieke perspectieven hebben alleen de acties in de bij dat perspectief horende baan namen. De acties in de andere banen zijn gecomprimeerd en anoniem weergegeven.

Verantwoordelijkheden inzake uitzonderingen op de happy flow zijn opgenomen bij de respectievelijke interface, in tegenstelling tot op de Processen & Informatie-laag, waar de uitzonderingen bij de use cases zijn genoemd.

Totaalperspectief

Happy flow - aangaan of bijwerken van een Abonnement


Toelichting
In elke voltrekking van de in het diagram beschreven flow is steeds sprake van één van elk van de bovenaan genoemde rollen.

De flow kent de volgende stappen:

  1. De PGO Server start de flow door in de PGO Presenter van de Zorggebruiker de mogelijkheid te presenteren om een Abonnement op notificaties te nemen voor een bepaalde Gegevensdienst bij een zekere Zorgaanbieder. Het gaat altijd om precies één Gegevensdienst (één scope, in OAuth-termen). Uit de Zorgaanbiederslijst weet de PGO Server welke Gegevensdiensten door een Zorgaanbieder aangeboden worden en of hierbij ook de optie wordt geboden om een Abonnement op notificaties te nemen. Desgewenst worden de Gegevensdienstnamen uit de Gegevensdienstnamenlijst gebruikt.
  2. De Zorggebruiker maakt expliciet zijn selectie en laat de OAuth User Agent een abonnement-verzoek sturen naar de Authorization Server. Het adres van het authorization endpoint komt uit de ZAL. De redirect URI geeft aan waarnaartoe de Authorization Server de OAuth User Agent verderop moet redirecten (met de authorization code).
  3. Daarop begint de Authorization Server de OAuth-flow (in zijn rol als OAuth Authorization Server) door een sessie te creëren.
  4. Dan laat de Authorization Server de Zorggebruiker zich authenticeren:
    1. De Authorization Server (nu in de rol van Authentication Client) start de authenticatieflow door de browser naar de Authentication Server te redirecten, onder meegeven van een redirect URI, die aangeeft waarnaartoe de Authentication Server straks de OAuth User Agent moet terugsturen, na het inloggen van de Zorggebruiker.
    2. De Authentication Server vraagt van de Zorggebruiker via zijn PGO Presenter om inloggegevens.
    3. Wanneer deze juist zijn, redirect de Authentication Server de OAuth User Agent terug naar de Authorization Server, onder meegeven van een ophaalbewijs.
    4. Met dit ophaalbewijs haalt de Authorization Server rechtstreeks bij de Authentication Server het BSN op.
  5. Dan breekt het vroegste moment aan waarop de Authorization Server ervoor instaat dat de Zorgaanbieder voor de betreffende Gegevensdienst überhaupt een Abonnement van die Persoon mag en wenst te ontvangen, door toetsing van de beschikbaarheidsvoorwaarde.
  6. Dan presenteert de Authorization Server via de PGO Presenter aan Zorggebruiker de vraag of laatstgenoemde hem toestaat notificaties m.b.t. de gekozen Gegevensdienst aan de Notification Server te sturen.
  7. Bij akkoord logt de Authorization Server dit als toestemming, genereert een authorization code en stuurt dit als ophaalbewijs, door middel van een browser redirect met de in stap 1 ontvangen redirect URI, naar de PGO Server. De Authorization Server stuurt daarbij de local state-informatie mee die hij in de eerste stap van de PGO Server heeft gekregen. Laatstgenoemde herkent daaraan het verzoek waarmee hij de authorization code moet associëren.
  8. De PGO Server vat niet alleen deze authorization code op als ophaalbewijs, maar leidt er ook uit af dat de toestemming is gegeven en logt het verkrijgen van het ophaalbewijs.
  9. Met dit ophaalbewijs wendt de PGO Server zich weer tot de Authorization Server, maar nu zonder tussenkomst van de OAuth User Agent, voor een access token.
  10. Daarop genereert de Authorization Server een access token en stuurt deze naar de PGO Server.
  11. Nu is de PGO Server gereed om het verzoek voor een Abonnement naar de Subscription Server te sturen, nadat hij de gebruiker eventueel nog nadere keuzes heeft laten maken. Het adres van het subscription endpoint haalt hij uit de ZAL. Hij plaatst het access token in het bericht en zorgt ervoor dat in het bericht geen BSN is opgenomen.
  12. De Subscription Server controleert of het ontvangen token recht geeft op het plaatsen, dan wel het bijwerken, van het beoogde Abonnement. Dan breekt het uiterste moment aan waarop de Subscription Server ervoor moet instaan dat de Zorgaanbieder voor de betreffende Gegevensdienst überhaupt een Abonnement van die Persoon mag en wenst te ontvangen.
  13. De Subscription Server slaat het Abonnement, inclusief de client_id van de PGO Server, op en retourneert een antwoord aan de PGO Server.
  14. De PGO Server slaat het Abonnement op.

Happy flow - beëindigen van een Abonnement


Toelichting
In elke voltrekking van de in het diagram beschreven flow is steeds sprake van één van elk van de bovenaan genoemde rollen.

De flow kent de volgende stappen:

  1. De PGO Server start de flow door in de PGO Presenter van de Zorggebruiker de mogelijkheid te presenteren om een Abonnement te beëindigen
  2. De Zorggebruiker kiest expliciet het Abonnement dat hij wenst te beëindigen en laat de OAuth User Agent een abonnement-verzoek sturen naar de Authorization Server. Het adres van het authorization endpoint komt uit de ZAL. De redirect URI geeft aan waarnaartoe de Authorization Server de OAuth User Agent verderop moet redirecten (met de authorization code).
  3. Daarop begint de Authorization Server de OAuth-flow (in zijn rol als OAuth Authorization Server) door een sessie te creëren.
  4. Dan laat de Authorization Server de Zorggebruiker zich authenticeren:
    1. De Authorization Server (nu in de rol van Authentication Client) start de authenticatieflow door de browser naar de Authentication Server te redirecten, onder meegeven van een redirect URI, die aangeeft waarnaartoe de Authentication Server straks de OAuth User Agent moet terugsturen, na het inloggen van de Zorggebruiker.
    2. De Authentication Server vraagt van de Zorggebruiker via zijn PGO Presenter om inloggegevens.
    3. Wanneer deze juist zijn, redirect de Authentication Server de OAuth User Agent terug naar de Authorization Server, onder meegeven van een ophaalbewijs.
    4. Met dit ophaalbewijs haalt de Authorization Server rechtstreeks bij de Authentication Server het BSN op.
  5. Dan presenteert de Authorization Server via de PGO Presenter aan Zorggebruiker de vraag of laatstgenoemde bevestigt om het betreffende Abonnement te willen beëindigen.
  6. Bij akkoord logt de Authorization Server dit als bevestiging, genereert een authorization code en stuurt dit als ophaalbewijs, door middel van een browser redirect met de in stap 1 ontvangen redirect URI, naar de PGO Server. De Authorization Server stuurt daarbij de local state-informatie mee die hij in de eerste stap van de PGO Server heeft gekregen. Laatstgenoemde herkent daaraan het verzoek waarmee hij de authorization code moet associëren.
  7. De PGO Server vat niet alleen deze authorization code op als ophaalbewijs, maar leidt er ook uit af dat de bevestiging is gegeven en logt het verkrijgen van het ophaalbewijs.
  8. Met dit ophaalbewijs wendt de PGO Server zich weer tot de Authorization Server, maar nu zonder tussenkomst van de OAuth User Agent, voor een access token.
  9. Daarop genereert de Authorization Server een access token en stuurt deze naar de PGO Server.
  10. Nu is de PGO Server gereed om het verzoek voor beëindiging van het Abonnement naar de Subscription Server te sturen. Het adres van het subscription endpoint haalt hij uit de ZAL. Hij plaatst het access token in het bericht en zorgt ervoor dat in het bericht geen BSN is opgenomen.
  11. De Subscription Server controleert of het ontvangen token recht geeft op het beëindigen van het Abonnement.
  12. De Subscription Server beëindigd het Abonnement en retourneert een antwoord aan de PGO Server.
  13. De PGO Server verwerkt het antwoord in de eigen administratie van Abonnementen.