Wat is OAuth? „Inloggen met Google” en gedelegeerde toegang uitgelegd
OAuth is een open standaard waarmee een gebruiker één app beperkte toegang geeft tot zijn account bij een andere dienst, zonder zijn wachtwoord weg te geven. Wanneer je op „Google Agenda verbinden” klikt en een scherm ziet met „Mag deze app je afspraken zien?”, dan is dat OAuth. De app krijgt een token voor precies wat je hebt goedgekeurd, dat je op elk moment kunt intrekken. Dezelfde techniek, met een extra laag die OpenID Connect heet, drijft „Inloggen met Google” en vergelijkbare knoppen aan.
Waarom OAuth ertoe doet als je met AI bouwt
OAuth komt in twee veelvoorkomende situaties naar voren wanneer je een app bouwt:
- Sociaal inloggen. Je wilt dat je gebruikers „Inloggen met Google” (of Apple, Microsoft, GitHub) gebruiken in plaats van een nieuw wachtwoord aan te maken. Zie hoe je login aan je app toevoegt.
- Verbinding maken met accounts van gebruikers bij andere diensten. Je app moet de agenda van een gebruiker lezen, berichten op diens socialemediaaccount plaatsen, bestanden uit diens clouddrive ophalen of boekhoudgegevens synchroniseren.
In beide gevallen kan je AI-builder de code schrijven, maar sommige stappen kun alleen jij zetten: een ontwikkelaarsapp aanmaken bij de provider, een client ID en client secret krijgen, callback-URL’s registreren en, voor sommige rechten, de beoordeling van de provider doorlopen. Weten hoe OAuth werkt, maakt die stappen — en de fouten die ze opleveren — veel minder mysterieus. Voor het grotere plaatje van inloggen, zie wat authenticatie is.
Een dagelijkse vergelijking
Denk aan een hotelkaart. Bij het inchecken controleert de receptie wie je bent en geeft je dan een kaart die je kamer en de sportschool opent — niet de andere kamers, niet de personeelsruimtes — en die stopt met werken bij het uitchecken. De kaart bevat je paspoort niet. Als je hem kwijtraakt, laat de balie hem blokkeren en geeft een nieuwe.
- De receptie is de autorisatieserver (Google’s inlogpagina).
- Je identiteitscontrole is jezelf inloggen bij Google.
- De kaart is het toegangstoken.
- „Alleen kamer en sportschool” zijn de scopes die je hebt goedgekeurd.
- Uitchecken is het verlopen van het token, of jij die de toegang intrekt.
De app die je gebruikt, ziet nooit je Google-wachtwoord, alleen de kaart.
Hoe OAuth stap voor stap werkt
De meest gebruikte flow voor webapps is de autorisatiecodeflow. Dit gebeurt er wanneer een gebruiker zijn Google Agenda aan een planningsapp koppelt:
- Klik. De gebruiker klikt op „Google Agenda verbinden.”
- Doorsturen naar de provider. De app stuurt de browser naar Google met zijn client ID, de scopes die hij wil (afspraken lezen) en de redirect URI waarnaar Google de gebruiker terugstuurt.
- Inloggen en toestemming geven. De gebruiker logt in bij Google (als hij dat nog niet is) en ziet een toestemmingsscherm met wat de app vraagt. Hij klikt op Toestaan.
- Terug met een code. Google stuurt de browser door naar de redirect URI van de app met een kortlevende, eenmalige autorisatiecode.
- Uitwisselen op de server. De server van de app stuurt die code, samen met de client secret, rechtstreeks naar Google en ontvangt een toegangstoken (en vaak een refreshtoken).
- De API gebruiken. De server roept de API van Google Agenda aan met het toegangstoken en haalt de afspraken van de gebruiker op.
De callback in stap 4 ziet er ongeveer zo uit:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
En het tokenantwoord in stap 5 is JSON zoals:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Het belangrijke ontwerppunt: de tokenuitwisseling gebeurt server-naar-server, dus de client secret en tokens hoeven nooit via de browser te gaan.
OAuth vs OpenID Connect vs je eigen login
| Wat het beantwoordt | Voorbeeld | |
|---|---|---|
| OAuth 2.0 | „Wat mag deze app namens de gebruiker doen?” (autorisatie) | De agenda van een gebruiker lezen |
| OpenID Connect (OIDC) | „Wie is deze gebruiker?” (authenticatie), bovenop OAuth gebouwd | „Inloggen met Google” geeft een geverifieerd e-mailadres terug |
| Je eigen login | „Is dit het juiste wachtwoord voor dit account?” | E-mail en wachtwoord (gehasht) opgeslagen in je database |
Veel apps combineren ze: inloggen met e-mail en wachtwoord, plus „Inloggen met Google” via OIDC, plus aparte OAuth-verbindingen met andere diensten.
Belangrijke termen
| Term | Betekenis |
|---|---|
| Provider / autorisatieserver | De dienst waarbij de gebruiker inlogt en toegang verleent — Google, Microsoft, GitHub. |
| Client | Jouw app, zoals geregistreerd bij de provider. |
| Client ID | De publieke identificatie van je app bij de provider. |
| Client secret | Het privéwachtwoord van je app bij de provider. Alleen op de server. |
| Scope | Een specifiek recht, zoals „agenda lezen” of „e-mailadres bekijken.” |
| Toestemmingsscherm | De pagina waarop de gebruiker de gevraagde scopes ziet en goedkeurt. |
| Redirect URI / callback-URL | Waarheen de provider de gebruiker terugstuurt. Moet vooraf worden geregistreerd en exact overeenkomen. |
| Toegangstoken | Kortlevend bewijsstuk om de API aan te roepen. |
| Refreshtoken | Langerlevend bewijsstuk om nieuwe toegangstokens op te vragen. Bewaar het zoals een wachtwoord. |
| ID-token | In OIDC een ondertekend token dat beschrijft wie de gebruiker is. |
| PKCE | Een extra controle („proof key”) die voorkomt dat onderschepte codes worden gebruikt. Aanbevolen voor alle clients. |
| state | Een willekeurige waarde die de flow beschermt tegen vervalste verzoeken. |
Veelvoorkomende misverstanden
- „OAuth is een loginsysteem.” Gewone OAuth verleent toegang; OpenID Connect regelt de identiteit. Een kaal toegangstoken gebruiken als bewijs van wie iemand is, heeft echte beveiligingsbugs veroorzaakt.
- „De app krijgt mijn wachtwoord.” Dat gebeurt nooit. Dat is het hele punt.
- „Om meer scopes vragen is onschuldig.” Gebruikers zijn argwanender bij brede verzoeken, en providers zoals Google kunnen een beoordeling van de app eisen voor gevoelige of beperkte scopes. Vraag alleen wat je nodig hebt.
- „De client secret kan in de frontend.” Alles in browsercode is publiek. Bewaar hem bij de geheimen aan de serverkant.
- „Het werkt bij testen, dus het werkt in productie.” Providers beperken niet-geverifieerde apps vaak — bijvoorbeeld tot vermelde testgebruikers — en de redirect-URI voor je live domein moet apart worden geregistreerd.
- „Tokens houden eeuwig.” Toegangstokens verlopen snel, en gebruikers kunnen toegang intrekken. Je app moet beide netjes afhandelen.
Wat je aan je AI-builder kunt vragen
- „Voeg ‚Inloggen met Google’ toe via OpenID Connect met een goed onderhouden authenticatiebibliotheek — bouw de OAuth-flow niet zelf.”
- „Gebruik de autorisatiecodeflow met PKCE en controleer de
state-parameter.” - „Lees de client ID en client secret uit omgevingsvariabelen op de server.”
- „Vraag alleen de scopes die we nodig hebben: alleen-lezen toegang tot de agenda.”
- „Vertel me welke redirect-URL’s ik moet registreren in de console van de provider, voor de preview, de gepubliceerde URL en mijn eigen domein.”
- „Bewaar refreshtokens versleuteld in de database, en behandel verlopen of ingetrokken tokens door de gebruiker opnieuw te laten verbinden.”
- „Laat gebruikers de integratie loskoppelen via hun instellingenpagina.”
OAuth en Mythex
Mythex heeft geen ingebouwd login voor eindgebruikers van de apps die je bouwt; de documentatie beschrijft een bring-your-own-aanpak — je kiest een authenticatiebibliotheek of gehoste provider, slaat de sleutels op als projectgeheimen, en de agent schrijft de code. Het recept voor authenticatie toevoegen heeft een startprompt hiervoor. Je komt OAuth ook in Mythex zelf tegen: je kunt je aanmelden met Google, het koppelen van GitHub voor repo-synchronisatie gebruikt GitHub-OAuth, en AI-clients die via MCP met Mythex verbinden, gaan langs een toestemmingspagina van OAuth. Zie voor meer wat authenticatie is en wat tweestapsverificatie is.
Veelgestelde vragen
Wat is OAuth in eenvoudige bewoordingen?
OAuth is een standaardmanier waarop een gebruiker één app beperkte toegang geeft tot zijn account bij een andere dienst — zoals een planningsapp laten lezen in zijn Google Agenda — zonder zijn wachtwoord weg te geven. De gebruiker keurt specifieke rechten goed, en de app krijgt een token dat alleen voor die rechten geldt.
Is OAuth hetzelfde als „Inloggen met Google”?
„Inloggen met Google” is gebouwd op OAuth 2.0 plus OpenID Connect, een laag bovenop OAuth die een standaardmanier toevoegt om de app te vertellen wie de gebruiker is. OAuth op zichzelf gaat over toegang verlenen; OpenID Connect maakt er een login van.
Wat is een OAuth-toegangstoken?
Een toegangstoken is een bewijsstuk dat de app naar de API van een dienst stuurt om te laten zien dat er toegang is verleend. Het is meestal kortlevend en beperkt tot de rechten (scopes) die de gebruiker heeft goedgekeurd. Een refreshtoken, indien uitgegeven, laat de app nieuwe toegangstokens krijgen zonder de gebruiker opnieuw te vragen.
Wat betekent redirect_uri_mismatch?
Het betekent dat de callback-URL die je app tijdens het inloggen stuurde niet precies overeenkomt met een URL die is geregistreerd in de ontwikkelaarsconsole van de provider. Voeg de exacte URL toe — inclusief https, domein, pad en eventuele slash aan het eind — voor elk adres waarop je app draait.
Is OAuth veilig?
OAuth 2.0 wordt breed gebruikt en is veilig wanneer het correct is geïmplementeerd: met de autorisatiecodeflow met PKCE, exacte redirect-URL’s, de state-parameter, en met de client secret en tokens aan de serverkant. De meeste problemen komen voort uit implementatiesnelkoppelingen, daarom wordt het gebruik van een goed onderhouden bibliotheek aanbevolen.