Zorgaanbiederauthenticatie en -autorisatie
0.1.0 - prototype
Publish Box goes here
Deze pagina brengt de eerder beschreven bewijzen samen. Zie voor de afzonderlijke regels vertrouwen, clientauthenticatie, autorisatie en DPoP en transport.
sequenceDiagram
autonumber
participant CLIENT as Clientsysteem URA-A
participant TRUST as Vertrouwensvoorziening
participant AUTH as Authorization server URA-B
participant RESOURCE as Resource server URA-B
CLIENT->>TRUST: Resolveer URA-B
TRUST-->>CLIENT: Registratie, endpoints en publieke sleutels
CLIENT->>CLIENT: Maak client assertion, RAR en token-DPoP
CLIENT->>AUTH: mTLS-tokenverzoek
AUTH->>TRUST: Resolveer client, JWKS en certificaatstatus
TRUST-->>AUTH: Vertrouwde clientgegevens
AUTH->>AUTH: Valideer identiteit, RAR en DPoP
AUTH-->>CLIENT: Getekend en DPoP-gebonden access token
CLIENT->>CLIENT: Valideer issuer, claims, RAR, aud en cnf.jkt
CLIENT->>CLIENT: Maak resource-DPoP met htm, htu, jti en ath
CLIENT->>RESOURCE: mTLS FHIR GET + access token + DPoP
RESOURCE->>RESOURCE: Valideer token, policy en resource-DPoP
RESOURCE-->>CLIENT: FHIR-response over mTLS
CLIENT->>CLIENT: Registreer eigen audit
RESOURCE->>RESOURCE: Registreer eigen audit
Vraag: bij welke organisatie hoort de gewenste resource en waar bevinden zich haar beveiligingsendpoints?
Bewijs: één vertrouwde registratie bindt URA-B aan issuer, tokenendpoint, resourcebasis, JWKS en certificaatgegevens.
Beslissende controle: alle later gebruikte URI's en keys moeten tot diezelfde registratie herleidbaar zijn.
Het clientsysteem bouwt drie afzonderlijke artefacten:
Deze artefacten mogen niet inhoudelijk worden samengevoegd. De assertion tekent bijvoorbeeld niet automatisch de losse RAR-formparameter.
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
DPoP: [compact proof verwijderd]
grant_type=client_credentials
&client_id=2.16.528.1.1007.3.3.11111111
&resource=https://fhir.example.org/fhir/bgz
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=[compact JWT verwijderd]
&authorization_details=[nl-gis-v1 JSON]
Het request loopt over mTLS. De authorization server controleert eerst clientcertificaat, status en assertion, daarna RAR-policy en token-DPoP. De volgorde mag intern verschillen, maar een token wordt alleen uitgegeven als alle onafhankelijke controles slagen.
De authorization server tekent niet blind de ontvangen RAR. Zij neemt de
geaccepteerde details op in het access token, stelt de resource als aud in en
bindt het token via cnf.jkt aan de DPoP-key.
Het resultaat is een verklaring van URA-B over:
Het clientsysteem valideert handtekening en claims tegen de eerder vertrouwde registratie en eigen requestcontext. Dit voorkomt dat een geldig getekend token voor een andere issuer, client, resource, doelorganisatie of DPoP-key wordt gebruikt.
Deze controle is een expliciete profielregel in deze uitwerking. Zij vervangt de latere resource-servercontrole niet.
GET /fhir/bgz HTTP/1.1
Authorization: DPoP [access token verwijderd]
DPoP: [requestspecifieke proof verwijderd]
De resourceproof gebruikt dezelfde DPoP-key en bindt methode, exacte URI en
access token aan een verse jti. De resource server controleert token,
autorisatiepolicy en proof opnieuw voordat de FHIR-response over mTLS wordt
teruggestuurd.
URA-A registreert de uitgaande aanvraag en ontvangen uitkomst. URA-B registreert tokenuitgifte, resourcebeslissing en dataverstrekking. Een gedeelde correlatie-id kan onderzoek ondersteunen, maar beide organisaties blijven verantwoordelijk voor hun eigen beveiligde auditspoor.