JWT
Staat voor "JSON Web Token."
Een JWT is een industriestandaard-token waarmee beveiligingsinformatie tussen twee partijen wordt gedeeld. JWT's zijn compact en URL-veilig, waardoor webservers en clients ze kunnen uitwisselen als onderdeel van een HTTPS-verzoek. JWT's worden het vaakst gebruikt om een gebruiker te authenticeren die is aangemeld bij een website of webapp, vaak via een single sign-on-service (SSO).
JWT's bestaan uit drie onderdelen:
- De header bevat informatie over het type token en het algoritme dat is gebruikt om de digitale handtekening te genereren.
- De payload bevat de lijst met claims die door het token worden gedaan. Deze claims bevatten meestal informatie over de uitgever van het token, de website of webapp die het token gebruikt en de gebruiker. Ze bevatten ook het tijdstip waarop het token is uitgegeven en wanneer het verloopt beide met gebruik van (epoch-tijd). Naast deze veelvoorkomende waarden kan een JWT willekeurige claims bevatten die uniek zijn voor de website of webapp die het token uitgeeft.
- De handtekening verifieert dat er sinds de uitgifte niet met het token is geknoeid.
Websites en webapps gebruiken JWT's vaak als een stateless methode om een gebruiker te authenticeren. Hiervoor hoeft de server geen sessie bij te houden in zijn geheugen of database, waardoor de vereiste overhead voor elke gebruiker afneemt. In plaats daarvan wisselen de client en de server het JWT bij elk HTTPS-verzoek heen en weer en verifiëren ze de handtekening om te controleren of het token niet is gewijzigd. Zodra het JWT verloopt, moet de gebruiker zich opnieuw aanmelden om een nieuw token te ontvangen.
Een JWT maken
Zowel de header als de payload van een JWT bestaat uit tekst die is geschreven in JSON. De header en payload worden elk afzonderlijk gecodeerd met een algoritme dat base64 wordt genoemd, waardoor meerdere tekstregels worden omgezet in één tekenreeks. De gecodeerde tekenreeksen van de header en payload worden samengevoegd en gescheiden door een '.'-teken.
De samengevoegde tekenreeks, die de gecodeerde header en payload bevat, wordt nogmaals gecodeerd met een hash-algoritme en een geheime sleutel om de handtekening te maken. Vervolgens wordt de handtekening aan het einde van de header en payload toegevoegd, gescheiden door nog een '.'-teken, om het uiteindelijke JWT te maken.
Test je kennis