En JWT är en lapp med tre delar separerade av punkter. Första delen säger hur den är signerad. Andra delen är data — vem du är, vad du får göra. Tredje delen är signaturen. Allt utom signaturen kan läsas av vem som helst.
01Anatomi: tre delar, två punkter
En typisk JWT ser ut så här:
Tre delar, alla base64-kodade:
- Header — vilken algoritm token är signerad med (t.ex. HS256)
- Payload — själva data: vem användaren är, när tokenen går ut
- Signatur — bevis att tokenen inte är manipulerad
02JWT är inte krypterad — den är signerad
Det här är det viktigaste att förstå: vem som helst kan läsa innehållet i en JWT. Det är inte gömt. Det är bara base64-kodat, precis som vi såg i lektion 27 om Basic Auth.
Vad signaturen gör är annat: den bevisar att tokenen kommer från en server som har en specifik hemlig nyckel — så ingen kan ändra "min användare" till "någon annans användare" utan att signaturen blir ogiltig.
03Hur den används i en request
Tokenen följer med i Authorization-headern, med prefixet Bearer:
Servern tar emot, verifierar signaturen, och om allt stämmer behandlar requesten som inloggad. Inget databas-uppslag behövs — servern litar på sin egen signatur.
04Prova själv — dekoda en JWT
Skriv vad du vill i payloaden. Du får tillbaka en riktig JWT. Klicka dekoda för att se hur lätt innehållet plockas isär.
05Vad det betyder för dig
JWT är ett bra verktyg när det används rätt — och en katastrof när det används fel. Som användare kan du inte styra det, men förstår du strukturen kan du också förstå när du läser i nyheter att en sajt blev hackad genom "JWT-fallgropen" — som vi tar i djupare-spåret.
Nästa lektion (30) avslutar fundamentet med TLS — det krypterade lagret under HTTP som hindrar allt vi pratat om från att läsas av folk i mitten.