Token-based authentication is een manier om aan te tonen wie je bent zonder bij elk verzoek je wachtwoord mee te sturen. Nadat je één keer hebt ingelogd, geeft de server je een ondertekend token, een korte reeks tekens, en je app hangt dat token aan elk volgend verzoek. De server controleert de handtekening en weet dat jij het echt bent.
Stel je een festivalbandje voor. Je laat je ticket één keer zien bij de ingang, krijgt een bandje, en daarna laat je gewoon het bandje zien om weer naar binnen te gaan. Niemand checkt de hele dag opnieuw je ID. Het token is dat bandje: bewijs dat je de controle al hebt gehad. Het meest gebruikte formaat is een JSON Web Token, dat je identiteit en een vervaldatum in zich draagt.
Deze aanpak past goed bij moderne apps, want hetzelfde token kan naar een website, een mobiele app en een API reizen zonder dat elk daarvan een eigen inlogsysteem nodig heeft. Het sluit natuurlijk aan op OAuth en single sign-on, waar een vertrouwde partij het token uitgeeft. Tokens verlopen ook, dus een gestolen token werkt na een ingestelde tijd niet meer in plaats van eeuwig.
Er is wel een afweging om te kennen. Omdat de server geen lijst bijhoudt van wie er is ingelogd, kan hij niet zomaar een sessie wissen om iemand eruit te gooien. Een gelekt token blijft geldig tot het verloopt. Het gangbare antwoord is een opzet met twee tokens: een kortlevend access-token dat het werk doet, plus een langer refresh-token dat je kunt intrekken.
En de omgang telt net zo zwaar als het ontwerp. Een token dat over gewoon HTTP gaat of ligt waar een kwaadaardig script het kan pakken, doet het hele voordeel teniet.
Bij TopDevs gebruiken we token-based authentication om de APIs en apps die we bouwen te beveiligen, zodat logins stateless blijven en makkelijk meegroeien als het verkeer van een klant toeneemt.