Vad Är ett JWT? En Komplett Förklaring av JSON Web Tokens
Snabbt svar
En JWT är en sträng med tre Base64URL-kodade delar separerade med punkter: header.payload.signature. Header specificerar algoritmen, payload innehåller claims (user ID, roles, expiration) och signature bevisar äkthet. Använd vår gratis JWT Decoder.
Introduktion
Ett JWT (JSON Web Token) är ett kompakt, URL-säkert token-format definierat av RFC 7519 för säker överföring av information mellan parter som ett JSON-objekt. JWT:er används ofta för autentisering i webbapplikationer: efter inloggning utfärdar servern en JWT som klienten inkluderar i efterföljande requests. JWT:er är stateless —servern behöver inte slå upp token i en databas; token själv innehåller användarens claims och en signature.
Steg för steg
-
Förstå den tredelade strukturen
En JWT har tre delar: rubrik (algoritm och typ), nyttolast (anspråk) och signatur (bevisar integritet). Varje del är Base64URL-kodad och separerad med punkter: eyJhbGciOi...J9.eyJzdWIi...J9.signature. De två första delarna kan läsas av alla med token; endast signaturen kräver den hemliga nyckeln.
-
Lär dig standardkraven
Nyttolasten innehåller påståenden — uttalanden om ämnet. Standardanspråk: 'sub' (ämne/användar-ID), 'iat' (utfärdat vid tidsstämpel), 'exp' (utgångsdatum), 'nbf' (inte tidigare), 'iss' (utfärdare), 'aud' (publik). Anpassade anspråk kan inkludera roller, behörigheter eller annan data.
-
Förstå signeringsalgoritmer
JWT:er använder symmetrisk (HS256 — delad hemlighet) eller asymmetrisk (RS256, ES256 — offentlig/privat nyckelpar) signering. Signaturen förhindrar manipulering: att ändra någon del av token gör signaturen ogiltig. Endast innehavaren av den hemliga/privata nyckeln kan skapa giltiga tokens.
-
Använd JWTs för autentisering
Efter inloggning skapar servern en JWT och skickar den till klienten. Klienten inkluderar JWT i auktoriseringshuvudet (Bearer token) för efterföljande förfrågningar. Servern verifierar signaturen och kontrollerar utgången – ingen databassökning behövs.
Exempel
JWT struktur
Input: En typisk JWT
Produktion: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature
Avkodad rubrik
Input: Första delen avkodad
Produktion: {"alg": "HS256", "typ": "JWT"}
Avkodad nyttolast
Input: Andra delen avkodad
Produktion: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}
Vanliga problem
- Avkodning vs verifiering – att avkoda en JWT (läsa dess innehåll) bevisar INTE att den är äkta. Verifiera alltid signaturserversidan med den hemliga nyckeln innan du litar på anspråk.
- Lagring av JWTs i localStorage – detta gör dem tillgängliga för JavaScript, sårbara för XSS-attacker. Lagra i httpOnly cookies för bättre säkerhet.
- Poletter med lång livslängd — om en token blir stulen förblir den giltig tills den löper ut. Använd kortlivade åtkomsttokens (15-60 min) med uppdateringstoken för långa sessioner.
- Känsliga data i nyttolasten — nyttolasten kan läsas av alla med token (den är Base64, inte krypterad). Lägg aldrig lösenord, kreditkort eller hemligheter i nyttolasten.
Tips
- Verifiera alltid JWT-signaturserversidan innan du litar på några anspråk – enbart avkodning är inte autentisering.
- Använd kortlivade åtkomsttokens (15-60 minuter) med uppdateringstoken för långa sessioner för att minimera skador från tokenstöld.
- Lagra JWTs i httpOnly, Secure, SameSite-cookies snarare än localStorage för att förhindra XSS-attacker.
- Använd vår JWT-avkodare för att inspektera tokeninnehåll för felsökning – din token lämnar aldrig din webbläsare.