Toegangstoken: de digitale sleutel achter inloggen zonder wachtwoord
Wie weleens met één klik heeft ingelogd bij een app via zijn Google- of Facebook-account, of een programma toestemming heeft gegeven om in zijn agenda te kijken, heeft onbewust gebruikgemaakt van een toegangstoken. Het is een van de belangrijkste, maar meest onzichtbare bouwstenen van het moderne internet: een digitaal bewijsstukje waarmee een app of website kan aantonen dat zij namens jou mag handelen, zonder dat je steeds opnieuw je wachtwoord hoeft in te typen.
Vergelijk het met een garderobebonnetje bij een theater. Bij binnenkomst geef je je jas af en laat je eventueel je identiteitsbewijs zien; in ruil krijg je een genummerd bonnetje. De rest van de avond hoef je niet steeds opnieuw te bewijzen wie je bent: het bonnetje volstaat om je jas terug te krijgen. Wie het bonnetje heeft, krijgt de jas — de garderobemedewerker controleert niet nog eens je paspoort. Een toegangstoken werkt vergelijkbaar: je logt één keer in met je wachtwoord, en krijgt daarna een tijdelijk 'bonnetje' waarmee systemen je herkennen, zonder dat je wachtwoord telkens over het internet hoeft te reizen.
Wat is het precies?
Een toegangstoken (Engels: access token) is in de kern niets meer dan een stukje digitale tekst: vaak een lange, willekeurig ogende reeks letters en cijfers, soms een gestructureerd bestandje met gegevens erin, een zogeheten JWT (JSON Web Token). Dat laatste is een compact tekstformaat waarin bijvoorbeeld staat wie de gebruiker is, welke rechten hij heeft en tot wanneer het token geldig is.
Het proces verloopt meestal in vaste stappen. Eerst log je in bij een dienst met je gebruikersnaam en wachtwoord, of geef je toestemming ('autoriseer je') dat een app bij een andere dienst mag kijken. De server controleert die gegevens één keer, en geeft je daarna een token terug. Vanaf dat moment stuurt je app of browser dat token mee bij ieder volgend verzoek, bijvoorbeeld: 'geef mij mijn agenda-afspraken, hier is mijn token als bewijs'. De ontvangende server hoeft dan niet opnieuw je wachtwoord te controleren; hij kijkt alleen of het token geldig, onvervalst en nog niet verlopen is.
Dit is een belangrijk verschil met een wachtwoord. Een wachtwoord is permanent en universeel: wie het heeft, kan overal inloggen totdat het wordt gewijzigd. Een toegangstoken is meestal tijdelijk (het verloopt na bijvoorbeeld een uur) en beperkt: het geeft vaak alleen toegang tot een specifiek onderdeel, een zogeheten scope. Een token voor een agenda-app kan bijvoorbeeld wel je afspraken laten lezen, maar niet je e-mail. Naast het toegangstoken bestaat vaak ook een refresh token: een langer geldig, apart bewaard bewijsstuk waarmee een app automatisch een nieuw, vers toegangstoken kan aanvragen zodra het oude verloopt, zonder dat jij opnieuw hoeft in te loggen.
De meeste toegangstokens zijn zogeheten bearer tokens: wie het token 'draagt' (bezit) en meestuurt, krijgt toegang — net als bij het garderobebonnetje wordt er niet extra gecontroleerd of jij wel echt de eigenaar bent. Dat maakt het systeem simpel en snel, maar betekent ook dat een gestolen token, zolang het geldig is, door een ander misbruikt kan worden. Vandaar dat toegangstokens meestal kort geldig zijn en altijd over een beveiligde, versleutelde verbinding (https) worden verstuurd.
Wat wil men ermee bereiken?
De belangrijkste drijfveer achter toegangstokens is een combinatie van gebruiksgemak en veiligheid. Zonder tokens zou elke app die met een andere dienst praat, jouw wachtwoord van die dienst moeten kennen en bewaren — een risicovolle situatie, want een lek bij één app zou dan meteen je hoofdwachtwoord blootleggen. Met tokens hoeft een app je wachtwoord nooit te zien: ze krijgt alleen een beperkt, intrekbaar bewijsstuk.
Tokens maken het ook mogelijk om nauwkeurig te bepalen wát een app mag doen. In plaats van 'alles of niets' kun je toestemming geven voor precies afgebakende taken, bijvoorbeeld alleen 'agenda lezen' zonder 'e-mail versturen'. Die toestemming kun je bovendien op elk moment intrekken, zonder dat je je wachtwoord hoeft te veranderen — handig als je een app niet meer vertrouwt of niet meer gebruikt.
Daarnaast maken toegangstokens het praktisch mogelijk dat computersystemen onderling met elkaar communiceren zonder menselijke tussenkomst, bijvoorbeeld wanneer de ene bedrijfsapplicatie automatisch gegevens ophaalt bij een andere via een API (een programmeerbare interface tussen twee systemen). Ook single sign-on — één keer inloggen en daarna bij meerdere gekoppelde diensten toegang hebben — steunt op dit principe.
Voorbeelden uit de praktijk
De belangrijkste bouwsteen achter moderne toegangstokens is OAuth 2.0, een open standaard die in 2012 is vastgelegd door de internetstandaardisatie-organisatie IETF (in document RFC 6749). Vrijwel elke 'Inloggen met Google' of 'Inloggen met Microsoft'-knop die je tegenkomt, gebruikt deze standaard onder de motorkap.
Nauw verwant is JSON Web Token (JWT), een tekenformaat voor tokens dat in 2015 werd vastgelegd in RFC 7519. JWT's worden bijvoorbeeld gebruikt door talloze inlogdiensten en API's om in het token zelf te coderen wie de gebruiker is en welke rechten hij heeft.
GitHub, het populaire platform voor softwarecode, geeft ontwikkelaars al jaren 'personal access tokens' om via de command line of scripts bij hun account te kunnen. In 2022 introduceerde GitHub daarnaast 'fine-grained' tokens, die nauwkeuriger dan voorheen per repository (code-opslagplaats) en per rechtensoort kunnen worden ingesteld.
Ook clouddiensten leunen zwaar op dit principe: Amazon Web Services (AWS) gebruikt zijn Security Token Service (STS) om tijdelijke, automatisch verlopende inloggegevens uit te geven aan applicaties die in de cloud draaien, zodat er geen permanente wachtwoorden in programmacode hoeven te worden opgeslagen. En bedrijfsapplicaties als Slack en Microsoft 365 geven ontwikkelaars OAuth-toegangstokens om, met toestemming van de gebruiker, berichten te lezen of te versturen via hun API's.
Hoe ver is de techniek?
Toegangstokens zijn geen toekomstmuziek meer, maar volledig ingeburgerde techniek: OAuth 2.0 en JWT vormen inmiddels de facto standaard achter bijna elke grote website, app en cloudddienst. De techniek is dus rijp en breed getest, wat niet wil zeggen dat ze foutloos is.
Er wordt gewerkt aan verfijningen. Zo bereidt de IETF-werkgroep achter OAuth een opvolger voor, informeel OAuth 2.1 genoemd: geen compleet nieuwe standaard, maar een opschoning die verouderde en onveilige onderdelen van OAuth 2.0 schrapt. Dit document had medio jaren 2020 nog geen definitieve RFC-status, maar circuleerde al wel als concept waarop veel implementaties zich baseren.
De grootste zwakte van toegangstokens zit niet in het idee zelf, maar in de uitvoering. Tokens kunnen worden gestolen via phishing, kwaadaardige software of onzorgvuldige opslag in browsers en apps; wie een geldig token bemachtigt, kan zich er meestal net zo goed mee legitimeren als de rechtmatige gebruiker. Ook verkeerd ingestelde scopes (te ruime rechten) en te lang geldige tokens vergroten de risico's. Als reactie worden tokens in de praktijk steeds korter geldig gemaakt, gecombineerd met refresh tokens, en experimenteert de sector met technieken als DPoP (Demonstrating Proof-of-Possession), waarbij een token wordt gekoppeld aan het specifieke apparaat dat het heeft aangevraagd, zodat een gestolen token elders minder makkelijk te gebruiken is. Dit is een volwassen maar nog altijd evoluerend stuk beveiligingstechniek.
Wie werken eraan?
Anders dan bij bijvoorbeeld AI-chips is er bij toegangstokens geen wedloop tussen landen; het is vooral een open, internationaal standaardisatieproces. De IETF (Internet Engineering Task Force), met zijn OAuth-werkgroep, is de belangrijkste plek waar de onderliggende standaarden worden vastgelegd en bijgewerkt, in samenwerking met vrijwilligers en vertegenwoordigers van bedrijven wereldwijd.
Grote technologiebedrijven implementeren en beïnvloeden deze standaarden actief, waaronder Google, Microsoft, Amazon, Meta en GitHub (onderdeel van Microsoft). Gespecialiseerde identiteitsbedrijven als Okta en het door Okta overgenomen Auth0 bouwen kant-en-klare inlogsystemen op basis van deze standaarden, die weer door duizenden andere bedrijven worden gebruikt. Op het gebied van beveiligingsonderzoek en praktijkrichtlijnen speelt de non-profitorganisatie OWASP (Open Web Application Security Project) een belangrijke rol, met vrij toegankelijke aanbevelingen over veilig tokengebruik.