Token
TechnologieEen middel dat men gebruikt om ergens in te mogen. Dat kan bijvoorbeeld een ruimte in een gebouw zijn of een digitaal systeem.
Een token in cybersecurity is een digitaal object dat wordt gebruikt om identiteit te verifiëren of toegang te autoriseren tot systemen, applicaties of data. Tokens vervangen traditionele authenticatiemethoden zoals sessiecookies en bieden een veiligere, schaalbare manier om gebruikers te identificeren zonder dat bij elk verzoek opnieuw inloggegevens verstuurd hoeven te worden. De meest gebruikte vorm is het JSON Web Token (JWT), dat breed wordt ingezet in webapplicaties en API-beveiliging voor het autoriseren van verzoeken. Tokens vormen de ruggengraat van moderne authenticatie-architecturen, van single sign-on (SSO) tot multi-factor authenticatie (MFA) en OAuth 2.0 flows die toegang delegeren tussen applicaties.
Hoe werkt een token?
Het tokenproces begint wanneer een gebruiker zich authenticeert bij een server, bijvoorbeeld door een gebruikersnaam en wachtwoord in te voeren of via een identity provider. Na succesvolle verificatie genereert de server een token dat naar de client wordt gestuurd. Bij elk volgend verzoek stuurt de client dit token mee in de HTTP Authorization-header, waardoor de server de identiteit en rechten van de gebruiker kan vaststellen zonder opnieuw credentials te controleren tegen een database.
Een JWT bestaat uit drie delen, gescheiden door punten: de header die het type token en het ondertekeningsalgoritme specificeert, de payload die claims bevat zoals de gebruikers-ID, toegangsrechten, uitgiftedatum en vervaltijd, en de signature die garandeert dat het token niet is gemanipuleerd tijdens transport. De server valideert het token door de signature opnieuw te berekenen met de geheime sleutel en te vergelijken met de meegestuurde waarde. Als deze overeenkomen, weet de server dat het token authentiek en ongewijzigd is.
Tokens zijn stateless, wat betekent dat de server geen sessie-informatie hoeft op te slaan in een database of geheugen. Dit maakt tokens bijzonder geschikt voor gedistribueerde architecturen en microservices, waar meerdere servers dezelfde tokens moeten kunnen valideren zonder een centrale sessieopslag te raadplegen. OAuth 2.0 en OpenID Connect gebruiken tokens als kernmechanisme voor het delegeren van toegang tussen applicaties. Hierdoor kan een gebruiker een derde partij beperkte, tijdgebonden toegang geven tot specifieke gegevens zonder het wachtwoord te delen, wat de security aanzienlijk verbetert ten opzichte van het delen van credentials.
Wanneer heb je tokens nodig?
Tokens zijn essentieel in elke moderne webapplicatie die authenticatie en autorisatie vereist, vooral zodra je applicatie een API aanbiedt aan externe of interne afnemers. API's verwerken duizenden verzoeken per seconde en tokens bieden een efficiënte manier om elk verzoek te autoriseren zonder de overhead van sessiegebaseerde authenticatie die bij elke request een database-lookup vereist. In cloud-native architecturen waar services horizontaal schalen, zijn tokens de standaard voor service-to-service communicatie.
Single sign-on (SSO) is een veelvoorkomende use case voor tokens. Met tokens kan een gebruiker zich eenmaal aanmelden bij een identity provider en vervolgens naadloos toegang krijgen tot meerdere applicaties zonder opnieuw in te loggen. Dit verbetert de gebruikerservaring en vermindert het risico op wachtwoordmoeheid, waarbij gebruikers zwakke of hergebruikte wachtwoorden kiezen uit frustratie over het steeds opnieuw moeten inloggen. Ook mobiele applicaties gebruiken tokens intensief omdat ze geen cookies ondersteunen zoals traditionele webbrowsers dat doen.
In het kader van Zero Trust-beveiliging spelen tokens een centrale en onmisbare rol. Elk verzoek wordt individueel geautoriseerd op basis van het token en de claims die het bevat, ongeacht of het verzoek van binnen of buiten het netwerk komt. Dit sluit direct aan bij het Zero Trust-principe van "never trust, always verify" en maakt tokens een fundamenteel bouwblok voor organisaties die deze architectuur implementeren als onderdeel van hun security-transformatie.
Voordelen en beperkingen van tokens
Het belangrijkste voordeel van tokens is hun schaalbaarheid en platformonafhankelijkheid. Omdat tokens stateless zijn, hoeft de server geen sessiedata bij te houden, wat de serverbelasting vermindert en horizontaal schalen over meerdere servers of datacenters vereenvoudigt. Tokens werken in webapplicaties, mobiele apps, IoT-apparaten en server-to-server communicatie zonder aanpassingen aan het tokenformaat. Daarnaast ondersteunen tokens fijnmazige autorisatie door specifieke rechten en scopes in de payload op te nemen, waardoor je precies kunt bepalen welke acties een gebruiker of applicatie mag uitvoeren.
Daar staan beveiligingsrisico's tegenover die je serieus moet nemen. Als een token wordt onderschept via een man-in-the-middle aanval, kan een aanvaller zich voordoen als de legitieme gebruiker zolang het token geldig is. Daarom is HTTPS verplicht voor al het tokenverkeer zonder uitzondering. Tokens die worden opgeslagen in localStorage van de browser zijn kwetsbaar voor cross-site scripting (XSS) aanvallen, waarbij een aanvaller via ingeinjecteerd JavaScript het token kan uitlezen. een geschikte praktijk is tokens op te slaan in HttpOnly cookies die niet via JavaScript toegankelijk zijn en daarmee beschermd zijn tegen XSS.
Een ander risico is het gebruik van te lange vervaltijden voor tokens. Een token dat dagen of weken geldig blijft, vergroot het venster waarin een gestolen token misbruikt kan worden aanzienlijk. Best practice is korte vervaltijden van 15 tot 30 minuten in combinatie met refresh tokens voor langere sessies. Refresh tokens worden veiliger opgeslagen en genereren bij gebruik een nieuw access token, waardoor het risico van tokendiefstal beperkt wordt tot een korte periode. Zwakke cryptografische algoritmen vormen een bijkomend risico: het gebruik van het "none"-algoritme of onvoldoende sterke sleutels maakt tokens kwetsbaar voor vervalsing. Organisaties moeten sterke algoritmen gebruiken zoals RS256 of ES256 en hun encryptiesleutels regelmatig roteren om de integriteit van het tokenmechanisme te waarborgen.
Veelgestelde vragen over tokens
Wat is het verschil tussen een access token en een refresh token?
Een access token geeft directe toegang tot een resource en heeft een korte levensduur, meestal 15 tot 30 minuten. Een refresh token wordt gebruikt om een nieuw access token op te vragen zonder dat de gebruiker opnieuw moet inloggen. Refresh tokens hebben een langere levensduur en worden veiliger opgeslagen dan access tokens om het risico bij compromittering te beperken.
Is een API key hetzelfde als een token?
Nee, er zijn belangrijke verschillen. Een API key is een statische sleutel die de applicatie identificeert, terwijl een token dynamisch wordt gegenereerd en een specifieke gebruikerssessie met rechten vertegenwoordigt. API keys bieden geen gebruikersauthenticatie en hebben doorgaans geen vervaltijd, waardoor ze minder veilig zijn dan tokens voor gebruikersgebonden toegangscontrole.
Hoe beveilig je tokens tegen diefstal?
Gebruik altijd HTTPS voor alle tokenverkeer, sla tokens op in HttpOnly cookies in plaats van localStorage, stel korte vervaltijden in en implementeer token-revocatie voor het geval een token gecompromitteerd raakt. Voeg daarnaast claims toe zoals het IP-adres of device fingerprint om het gebruik van gestolen tokens te beperken tot het oorspronkelijke apparaat.
Kunnen tokens gehackt of vervalst worden?
Tokens zijn cryptografisch ondertekend en daardoor moeilijk te vervalsen als sterke algoritmen en voldoende lange sleutels worden gebruikt. Het risico zit in het onderscheppen of stelen van tokens via netwerkaanvallen, XSS of onveilige opslag. Met de juiste beveiligingsmaatregelen zoals HTTPS, veilige opslag en korte vervaltijden minimaliseer je dit risico aanzienlijk.
Wat gebeurt er als een token verloopt tijdens gebruik?
Wanneer een access token verloopt, wordt het verzoek geweigerd met een 401 Unauthorized statuscode. De applicatie gebruikt dan automatisch het refresh token om een nieuw access token op te vragen bij de autorisatieserver. Als ook het refresh token verlopen is, moet de gebruiker opnieuw inloggen. Dit mechanisme balanceert veiligheid met gebruiksvriendelijkheid.
Beveilig je API's en applicaties. Vergelijk Identiteitsbeheer aanbieders op IBgidsNL.