developer.overheid.nl

Ontwikkelaarsportaal van de Nederlandse overheid

Ga naar hoofdinhoud

OAuth 2.0

OAuth 2.0 is een open standaard voor autorisatie, waarmee applicaties namens een gebruiker toegang kunnen krijgen tot gegevens of functionaliteiten, zonder dat het wachtwoord gedeeld hoeft te worden. Het is vooral populair in mobiele apps, API's en microservices architecturen.

OAuth is geen authenticatieprotocol, maar wordt vaak samen gebruikt met OpenID Connect (OIDC) om ook de identiteit van een gebruiker vast te stellen.

Hoe werkt OAuth?

Een typische OAuth flow verloopt als volgt:

  1. Een gebruiker probeert toegang te krijgen tot een resource.
  2. De applicatie vraagt toestemming via een authorization server.
  3. De gebruiker logt in en geeft toestemming.
  4. De app ontvangt een access token en gebruikt dit om API's aan te roepen.

Zie ook de uitgebreide use case beschrijvingen van de client credentials flow en de authorization code flow

Belangrijke componenten:

  • Resource Owner: de gebruiker
  • Client: de app die toegang vraagt > link
  • Authorization Server: geeft tokens uit > link
  • Resource Server: API die toegang beschermt > link

OAuth in Nederland: NL GOV OAuth-profiel

Voor toepassingen binnen de Nederlandse overheid is er het NL GOV OAuth 2.0 profiel. Dit is een set afspraken en richtlijnen die ervoor zorgt dat OAuth op een interoperabele, veilige en betrouwbare manier wordt ingezet binnen het publieke domein.

Enkele kenmerken van het profiel:

  • Gebaseerd op de OAuth 2.0 standaard (RFC 6749)
  • Sluit aan bij Security Best Current Practices (BCP)
  • Strikt gebruik van PKCE en geen client secrets op publieke clients
  • Gebruik van signed requests en mutual TLS waar nodig

Het profiel wordt beheerd via een GitHub repository:

Officiële standaarden

Wanneer gebruik je OAuth?

OAuth is ideaal voor:

  • Toegang tot REST API's (bv. gegevens ophalen uit een register)
  • Delegatie van rechten (bv. iemand machtigt een app om namens hem gegevens op te vragen)
  • Veiligere alternatieven voor API keys of basis authenticatie

Niet geschikt voor:

  • Alleen identificatie zonder toestemming → gebruik dan OpenID Connect
  • Authenticatie in browser-only context zonder backend → kwetsbaar voor token diefstal

Meer bronnen