OAUTH-GESCHIEDENIS: VAN WACHTWOORDEN NAAR WERELDWIJDE STANDAARDEN

Je ziet het elke dag. Je klikt op "Inloggen met Google" of "Inloggen met GitHub". Je typt geen wachtwoord. Je komt direct de site binnen.

Dit werkt dankzij OAuth. Het is de wereldwijde standaard voor beveiliging. Maar het begon niet zo. Het is geëvolueerd om enorme problemen op te lossen.

Het probleem met wachtwoorden

In de begindagen maakte je voor elke website een nieuw wachtwoord aan. Dit veroorzaakte drie grote problemen:

  • Mensen gebruikten overal hetzelfde wachtwoord. Als één site werd gelekt, liep elk account risico.
  • Mensen vergaten hun wachtwoorden. Ze besteedden meer tijd aan het klikken op "wachtwoord vergeten" dan aan het gebruik van het web.
  • Websites zagen je onbewerkte wachtwoord. Als een site werd gehackt, was je wachtwoord weg.

De evolutie van beveiliging

  1. Basic Auth: Je stuurde je gebruikersnaam en wachtwoord bij elke aanvraag mee. Als je geen HTTPS gebruikte, konden hackers alles zien.

  2. Session Cookies: Je logde eenmaal in en kreeg een sessie-ID. Het was beter, maar cookies kunnen worden gestolen via aanvallen zoals XSS of CSRF. Bovendien kon de ene site jouw inloggegevens niet gebruiken om met een andere site te communiceren.

  3. API Keys: Je gaf een website een speciale sleutel. Dit was beter omdat je je wachtwoord niet meestuurde. API-sleutels hebben echter vaak te veel macht. Als je een API-sleutel aan een app geeft, kan die app de macht hebben om je e-mails te lezen, berichten te sturen en je account te verwijderen. Het is alsof je de autosleutel van je auto aan een hotelvalet geeft, maar die sleutel opent ook je huis.

De OAuth-oplossing: De valet-sleutel

OAuth veranderde alles. In plaats van je wachtwoord te geven, geef je een "token". Zie het als een valet-sleutel. Een valet-sleutel laat een chauffeur je auto parkeren, maar geeft hem niet de mogelijkheid om je kofferbak te openen of je huis binnen te gaan.

Hoe OAuth in de praktijk werkt:

  • Je wilt Canva gebruiken en foto's ophalen uit Google.
  • Canva vraagt Google om toestemming.
  • Google vraagt aan jou: "Mag Canva je foto's bekijken?"
  • Je zegt: "Ja, maar alleen bekijken. Laat ze niets verwijderen."
  • Google geeft Canva een specifieke token.

Canva ziet nooit je Google-wachtwoord. Zelfs als een hacker die token steelt, kunnen ze slechts voor een korte tijd foto's bekijken. Ze kunnen je wachtwoord niet wijzigen of je geld verplaatsen.

Moderne beveiliging: PKCE

Mobiele apps en web-apps hebben een zwakte. Ze kunnen geheimen niet goed verbergen. Om dit op te lossen, gebruiken we PKCE (Proof Key for Code Exchange).

Het werkt als een reserveringssysteem:

  • De app maakt een geheime code aan (de verifier).
  • De app stuurt een gehashte versie van die code (de challenge) naar Google.
  • Wanneer de app om de token vraagt, stuurt hij de originele geheime code.
  • Google controleert of de code overeenkomt met de challenge.

Als ze overeenkomen, weet Google dat het dezelfde app is. Als ze niet overeenkomen, blokkeert Google de aanvraag. Dit voorkomt dat hackers je autorisatiecode stelen.

De roadmap van OAuth

  • 2007 (OAuth 1.0): Zeer complex en maakte gebruik van zware wiskunde.
  • 2012 (OAuth 2.0): Sneller en eenvoudiger. Het maakte gebruik van tokens en vereiste HTTPS.
  • 2016 (OAuth 2.0 + PKCE): Voegde beveiliging toe voor mobiele en moderne web-apps.
  • 2023 (OAuth 2.1): De nieuwe gouden standaard. Het verwijdert oude, onveilige methoden.

De belangrijkste les: Geef nooit je wachtwoord aan een andere app. Geef ze een beperkt ticket dat verloopt. Zo blijf je zelf de controle houden.

Bron: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4