Zorgaanbiederauthenticatie en -autorisatie
0.1.0 - prototype
Publish Box goes here
Zorgaanbiederauthenticatie steunt op een keten van bewijzen. Iedere laag dekt een ander risico af en wordt door een specifieke actor gecontroleerd. Een implementatie mag een ontbrekende laag niet compenseren door een andere laag meer betekenis toe te kennen dan zij technisch heeft.
De flow beschermt:
De klinische payload zelf wordt in dit profiel niet apart ondertekend. Haar vertrouwelijkheid en integriteit tijdens transport volgen uit de TLS-verbinding naar het exact geregistreerde en geautoriseerde endpoint.
flowchart TB
CLIENT["Clientsysteem<br/>URA-A"]
TRUST["Vertrouwensvoorziening"]
AUTH["Authorization server<br/>URA-B"]
RESOURCE["FHIR resource server<br/>URA-B"]
CLIENT -->|"Resolveer doelorganisatie"| TRUST
TRUST -->|"Registratie, endpoints en publieke sleutels"| CLIENT
CLIENT -->|"mTLS + client assertion + RAR + DPoP"| AUTH
AUTH -->|"Getekend en DPoP-gebonden access token"| CLIENT
CLIENT -->|"mTLS + access token + resource-DPoP"| RESOURCE
RESOURCE -->|"FHIR-response over mTLS"| CLIENT
Binnen iedere organisatie blijven lokale gebruikersauthenticatie, mandatering, policy en sleutelbeheer eigen verantwoordelijkheden. Over iedere organisatiegrens moet de ontvangende actor alle relevante bewijzen opnieuw valideren.
| Bewijs | Betekenis | Controleplaats | Bewijst niet |
|---|---|---|---|
| Vertrouwde organisatieregistratie | welke issuer, endpoints, JWKS en certificaten bij een organisatie horen | clientsysteem, authorization server | bezit van een privésleutel of actuele toestemming |
| mTLS-clientcertificaat | bezit van een privésleutel binnen een vertrouwde PKI en bescherming van het kanaal | token- en resource server tijdens TLS-handshake | de gevraagde autorisatie of tokenbinding |
private_key_jwt |
het aanvragende systeem bezit de geregistreerde signing key en richt de assertion aan de authorization-server-issuer | authorization server | toestemming voor een FHIR-resource |
| RAR | welke resource, doelorganisatie en gebruikscontext worden gevraagd | clientsysteem en authorization server | dat de server de aanvraag heeft geaccepteerd |
| Getekend access token | welke autorisatiedetails de issuer heeft geaccepteerd | clientsysteem en resource server | bezit van de DPoP-key of payloadintegriteit buiten TLS |
| DPoP-proof | bezit van de tokengebonden sleutel en binding aan methode, URI en eventueel token | authorization server en resource server | organisatietrust of kanaalversleuteling |
| TLS-servervalidatie | verbinding met een servernaam onder een vertrouwde certificaatketen | iedere client bij de TLS-handshake | dat het endpoint bij de bedoelde organisatie hoort zonder registratie |
Een aanvaller kan proberen een geldig token, een JWKS-URI of een resource-URI
naar een ander systeem te laten wijzen. Daarom moeten issuer, tokenendpoint,
JWKS en resourcebasis uit één vertrouwde registratie komen. aud,
authorization_details.locations en de uiteindelijke request-URI moeten
vervolgens exact bij die registratie passen.
Een access token zonder sender constraint kan door een andere partij worden
hergebruikt. DPoP bindt het token via cnf.jkt aan een clientgegenereerde
publieke sleutel. De resource server vereist daarna een verse proof met
passende htm, htu en ath.
Een geldig ondertekend bericht kan nog steeds opnieuw worden aangeboden.
Client assertions en DPoP-proofs hebben daarom een korte geldigheid en een
unieke jti. De controlerende actor bewaart gebruikte waarden ten minste tot
na het geldigheidsvenster.
Clientauthenticatie bewijst wie aanvraagt, niet wat die organisatie mag lezen. De RAR beschrijft daarom resource, doelorganisatie en gebruiksdoel afzonderlijk. De authorization server past eigen beleid toe en tekent alleen de geaccepteerde details in het access token.
Compacte assertions, access tokens, DPoP-proofs en privésleutels zijn geen geschikte loginhoud. Fout- en auditregistratie gebruikt beslisregel-id's, actoren, tijd, correlatie en uitkomst. De workbench toont uitsluitend gesanitiseerde wirebeelden en publieke JOSE-claims.
Profielregel: iedere ontvangende actor moet alle bewijzen controleren die op zijn vertrouwensgrens relevant zijn en moet bij een ontbrekend, tegenstrijdig, verlopen of herhaald bewijs veilig stoppen.
Conceptkeuze uit het VWS/Twiin-memo: de organisatiehandtekeningen worden verbonden aan sleutels van geregistreerde organisatiecertificaten.
Open ontwerpkeuze: landelijke governance moet nog vaststellen welke registratie, PKI en certificaatprofielen, statusvoorziening, sleutelrotatie, tijdsvensters en duurzame replayopslag in productie worden gebruikt.
Referentie-implementatie: de repository gebruikt een lokale registratie, demo-CA, certificaatgebonden P-256/ES256-signing keys en in-memory replaystores om deze grenzen uitvoerbaar en testbaar te maken.