3.5 Starten aanbiedermodule
Op verzoek van Persoon stuurt de PGO de browser naar de website van module met een launch-code. Aanbiedermodule gebruikt de code om launch-context te verzamelen over de taak van een zorgverlener om uit te voeren en de gebruiker aan wie dit is toegewezen.
SMART on FHIR App Launch
Verschillende varianten van het starten van modules kwamen naar voren tijdens het ontwerpproces. In het starten van aanbiedermodules kiezen wij voor een HL7 SMART on FHIR
App Launch, een industriestandaard waarbij als nodig de gebruiker opnieuw geïdentificeerd wordt. Door een launch-context te registreren en de browser vooraf en na de start van de aanbiedermodule bij DVA langs te laten gaan wordt dit voorkomen.
Token exchange en optionele gebruikersidentificatie
In deze optie gebruikt het PGO Token Exchange (RFC 8693) om een launch_token op te halen bij de DVA, waarna een launch wordt gedaan naar de module met de DVA FHIR server als audience. De module start vervolgens een SMART on FHIR flow met de DVA, waarbij de DVA de verantwoordelijkheid neemt om de gebruiker, dan wel de browser, te authenticeren, afhankelijk van de (juridische) verantwoordelijkheden van de module.
Deze optie beschrijft een architectuur waarbij het PGO eerst een launch_token verkrijgt via Token Exchange, waarna de module een volledige SMART on FHIR flow doorloopt met gebruikersidentificatie bij de DVA. De combinatie van launch_token en gebruikersidentificatie biedt dubbele beveiliging. Op hoog niveau:
De PGO gebruikt de bestaande usecase Verzamelen en krijgt een access_token van de DVA
Voor module launch: PGO gebruikt Token Exchange om een launch_token te verkrijgen
PGO stuurt gebruiker naar module met launch_token en DVA als audience
Module start SMART on FHIR flow met DVA
DVA kan de gebruiker opnieuw identificeren (niet alleen browser sessie)
Module krijgt access_token van DVA voor directe resource toegang
Voordelen van deze Token Exchange Launch Token aanpak:
Dubbele beveiliging: Zowel launch_token als gebruikersidentificatie
Standaard SMART on FHIR: Module gebruikt bekende SMART launch flow met DVA
Token Exchange compliance: Gebruikt RFC 8693 voor launch_token verkrijging
Gebruikerszekerheid: DVA kan gebruiker opnieuw identificeren voor gevoelige modules
Directe toegang: Module communiceert direct met DVA FHIR service
Flexibiliteit: DVA kan verschillende identificatiemethoden gebruiken
Audit trail: Volledige logging van zowel launch_token als gebruikersidentificatie
Processtappen
Processtap | Toelichting |
|---|---|
1. Verzamelen launch-url en launch-code | In 3.3 Verzamelen aanbiedertaken ontvangt PGO een Aanvullende uitwerking volgt voor MedMij-deelnemers op het uitlezen van issuernaam DVA (doorgaans MedMij-naam). |
2. Doorsturen browser | PGO stuurt de browser naar het opgegeven endpoint: |
3. Uitwisselen launch-context | Aanbiedermodule ontvangt de gebruiker met een browserverzoek op de launch-url, leest de code en issuer uit, en vraagt DVA de code om te wisselen voor een |
4. Starten module | Aanbiedermodule gebruikt de launch-context om applicatie op te zetten voor de bezoekende gebruiker. Aanbiedermodule kan de verwijzingen naar taak gebruiken om met zorgaanbieder meer gegevens uit te wisselen en resultaten te bewaren. |
6. Bijwerken taak | Aanbiedermodule wijzigt taakstatus bij zorgaanbieder. |
Taakstatusopties uitwerken in FHIR-profiel na overleg met ontwikkelpartners.
Procesdiagram

Procesdialoog
3. Uitwisselen launch-context met .well-known/smart-configuration
HTTP/1.1 200 OK
Content-Type: application/json
{
"authorization_endpoint": "https://dvauth/connect/authorize",
"capabilities": [
"launch-ehr",
"client-public",
"sso-openid-connect",
"context-ehr-patient",
"permission-patient"
],
"code_challenge_methods_supported": ["S256"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"introspection_endpoint": "https://dvauth/connect/introspect",
"issuer": "https://dvauth",
"jwks_uri": "https://dvauth/.well-known/openid-configuration/jwks",
"response_types_supported": [
"code"
],
"revocation_endpoint": "https://dvauth/connect/revocation",
"scopes_supported": [
"openid",
"profile",
"launch",
"patient/*.read"
],
"token_endpoint": "https://dvauth/connect/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post"
]
}
HTTP 302 Redirect
GET https://aanbiedermodule-launch-url?iss=dva&launch=launch-code
Bespreken: Ondersteunen van grant_types-support op refresh_token optioneel?