Wat is OAuth? Uitleg over OAuth 2.0

Home Woordenlijst Wat is OAuth? Uitleg over OAuth 2.0

OAuth is een open standaard voor autorisatie: een applicatie krijgt namens een gebruiker toegang tot gegevens of functies in een ander systeem, zonder dat de gebruiker zijn wachtwoord aan die applicatie geeft. Koppelt u uw boekhoudpakket aan uw webshop en klikt u op een inlogscherm van het boekhoudpakket op "Toestaan", dan is dat OAuth. De huidige versie is OAuth 2.0 (RFC 6749, 2012); het oudere OAuth 1.0 wordt nauwelijks nog gebruikt, en OAuth 2.1 bundelt de huidige beveiligingsrichtlijnen in één specificatie.

Hoe werkt OAuth 2.0?

Bij OAuth zijn vier partijen betrokken: de gebruiker (resource owner), de client (de applicatie die toegang wil), de autorisatieserver (die de gebruiker laat inloggen en tokens uitgeeft) en de resource server (de API met de gegevens). De meest gebruikte flow, de authorization code flow, gaat zo:

  1. De applicatie stuurt de gebruiker door naar de autorisatieserver en geeft aan welke rechten (scopes) zij wil, bijvoorbeeld "facturen lezen".
  2. De gebruiker logt daar in en keurt het verzoek goed. De applicatie ziet het wachtwoord nooit.
  3. De autorisatieserver stuurt de gebruiker terug met een eenmalige authorization code.
  4. De applicatie wisselt die code, van server tot server, in voor een access token en meestal een refresh token.
  5. De applicatie roept de API aan met het access token. Verloopt dat, dan haalt zij met het refresh token een nieuw op, zonder de gebruiker lastig te vallen.

OAuth-flows (grant types)

  • Authorization code met PKCE: de standaard voor webapps, mobiele apps en single-page apps. PKCE beschermt tegen onderschepte codes.
  • Client credentials: voor communicatie tussen servers zonder gebruiker, zoals een achtergrondtaak die een API aanroept.
  • Device authorization: voor apparaten zonder goed toetsenbord, zoals tv's en terminals.
  • Refresh token: om nieuwe access tokens te krijgen zonder opnieuw in te loggen.
  • Implicit en password grant: oudere flows die nu als onveilig gelden en in OAuth 2.1 zijn geschrapt.

OAuth, OpenID Connect en authenticatie

OAuth gaat over autorisatie (wat een app mag doen), niet over authenticatie (wie de gebruiker is). Voor inloggen voegt OpenID Connect (OIDC) een identiteitslaag toe bovenop OAuth 2.0: naast het access token krijgt de app een ID-token, een JWT met gegevens over de ingelogde gebruiker. "Inloggen met Google" of "Inloggen met Microsoft" is OpenID Connect. Identiteitsplatforms zoals Auth0, Microsoft Entra ID en Keycloak ondersteunen beide standaarden.

OAuth bij koppelingen

Veel zakelijke API's gebruiken OAuth 2.0, waaronder Exact Online, Twinfield, Salesforce, HubSpot en Shopify. In de praktijk zitten de meeste problemen met OAuth niet in de eerste keer inloggen, maar in wat daarna komt: access tokens die na enkele minuten verlopen, refresh tokens die bij elk gebruik wisselen of verlopen na een periode zonder gebruik, tokens die versleuteld moeten worden opgeslagen, en een koppeling die ongemerkt stopt als een medewerker vertrekt. Een robuuste koppeling vernieuwt tokens op tijd, handelt elk foutgeval af en waarschuwt iemand als opnieuw toestemming nodig is. Zie onze API-integraties, API ontwikkeling en bijvoorbeeld onze Exact Online koppeling.

Veelgestelde vragen over OAuth

Wat is het verschil tussen OAuth en OAuth 2.0?

OAuth 2.0 is de huidige versie van OAuth en niet compatibel met OAuth 1.0. Wie nu OAuth zegt, bedoelt bijna altijd OAuth 2.0.

Is OAuth veilig?

OAuth 2.0 is veilig als het volgens de huidige richtlijnen is gebouwd: authorization code flow met PKCE, overal HTTPS, exacte redirect-URI's, kortlevende access tokens en veilig opgeslagen refresh tokens. De meeste incidenten komen door fouten in de uitvoering, niet door de standaard zelf.

Wat is een OAuth-scope?

Een scope is een recht dat de applicatie aanvraagt, zoals alleen-lezen toegang tot contactpersonen. De gebruiker ziet welke scopes worden gevraagd, en het token geeft alleen die rechten.

Is OAuth hetzelfde als single sign-on (SSO)?

Niet precies. SSO betekent één keer inloggen voor meerdere applicaties. Dat wordt vaak gebouwd met OpenID Connect (bovenop OAuth 2.0) of SAML, maar OAuth zelf is bedoeld voor autorisatie, niet voor inloggen.