PKIo Authenticatie
Machine-to-machine (M2M) authenticatie binnen het Edu-V Afsprakenstelsel is gebaseerd op het NL GOV Assurance profile for OAuth 2.0 met PKIoverheid-certificaten.
Zie de EDU-V documentatie voor M2M identificatie, authenticatie en autorisatie.
Overzicht
Alle EDU-V API-aanroepen tussen referentiecomponenten worden beveiligd met OAuth 2.0 Client Credentials en Private Key JWT authenticatie. Elke deelnemer beschikt over een PKIoverheid-certificaat waarmee een JWT wordt ondertekend.
Authenticatieflow
1. Client Assertion aanmaken
De aanvragende partij bouwt een JWT (client_assertion) met:
- Name
iss- Type
- string
- Description
De
client_idvan de aanvrager.
- Name
sub- Type
- string
- Description
Gelijk aan
iss(declient_id).
- Name
aud- Type
- string
- Description
Het token endpoint van de ontvangende partij.
- Name
exp- Type
- datetime
- Description
Verloopdatum, maximaal 5 minuten na aanmaak.
- Name
jti- Type
- string
- Description
Unieke identifier (UUID) ter voorkoming van replay-aanvallen.
De JWT wordt ondertekend met RS256 en de private key uit het PKIoverheid-certificaat.
2. Token aanvragen
Het ondertekende JWT wordt meegestuurd naar het token endpoint met de gewenste scope(s).
- Name
grant_type- Type
- string
- Description
client_credentials
- Name
client_id- Type
- string
- Description
De client identifier.
- Name
client_assertion_type- Type
- string
- Description
urn:ietf:params:oauth:client-assertion-type:jwt-bearer
- Name
client_assertion- Type
- string
- Description
Het ondertekende JWT.
- Name
scope- Type
- string
- Description
Gewenste scope(s), bijv.
eduv.catalogueofeduv.order.
OAuth 2.0
curl -X POST https://auth.leverancier.nl/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=onze-client-id" \
-d "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
-d "client_assertion=eyJhbGciOiJSUzI1NiIs..." \
-d "scope=eduv.catalogue"
3. Validatie door de ontvangende partij
De authorization server valideert:
- Ophalen van de publieke sleutel via het
jwks_uriendpoint van de aanvrager - Verificatie van de JWT-handtekening
- Geldigheid van het PKIoverheid-certificaat (verloopdatum, keten, CRL)
- Overeenkomst tussen
client_iden het OIN uit het certificaat
4. Access token gebruiken
Het uitgegeven access token heeft een maximale geldigheid van 1 uur en wordt meegegeven als Bearer token in de Authorization header.
Scopes
Elke EDU-V API heeft eigen OAuth scopes:
- Name
eduv.catalogue- Type
- Catalogue API
- Description
Productcatalogus ophalen.
- Name
eduv.order- Type
- Order API
- Description
Bestellingen ontvangen en bevestigen.
- Name
eduv.delivery.licensor- Type
- Delivery API
- Description
Leveringsorders ontvangen (Licentieregistratie).
- Name
eduv.entitlement.licensor- Type
- Entitlement API
- Description
Aanspraken ontvangen en bevestigen (Licentieregistratie).
- Name
eduv.usage.entitleor- Type
- Usage API
- Description
Activatie- en gebruiksgegevens versturen.
- Name
eduv.notification- Type
- Notifications API
- Description
Notificaties ontvangen en abonneren.
- Name
eduv.consent- Type
- Consent API
- Description
Toestemmingsregistratie beheren.
- Name
eduv.dpa- Type
- DPA API
- Description
Verwerkersovereenkomsten verifiëren.
Alternatief: Client Secret
Naast Private Key JWT ondersteunt Wimpel ook client_secret-authenticatie voor leveranciers die (nog) geen PKIoverheid-certificaat gebruiken. De flow is identiek, maar in plaats van een ondertekend JWT wordt een gedeeld secret meegestuurd.