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_id van de aanvrager.

  • Name
    sub
    Type
    string
    Description

    Gelijk aan iss (de client_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.catalogue of eduv.order.

OAuth 2.0

POST
/oauth/token
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:

  1. Ophalen van de publieke sleutel via het jwks_uri endpoint van de aanvrager
  2. Verificatie van de JWT-handtekening
  3. Geldigheid van het PKIoverheid-certificaat (verloopdatum, keten, CRL)
  4. Overeenkomst tussen client_id en 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.

Was this page helpful?