JWT-avkodare

Klistra in en JWT (tre base64url-kodade delar åtskilda av punkter), så visar avkodaren headern, payloaden och signaturen – avkodade och snyggt formaterade – tillsammans med den upptäckta algoritmen, tokenets utgångstid i din lokala tid och om nbf (not-before), iat (issued-at) och exp (expiry) är konsekventa. Valfri signaturverifiering om du har hemligheten eller den offentliga nyckeln.

Så avkodar du en JWT

  1. 1

    Klistra in tokenet

    Tre base64url-strängar åtskilda av `.` (header.payload.signatur).

  2. 2

    Läs den avkodade headern

    Algoritm, typ, nyckel-ID (`kid`). Algoritmen anger vilken nyckeltyp som krävs för verifiering.

  3. 3

    Läs payloaden

    Standardclaims (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) plus eventuella anpassade claims som din applikation utfärdar.

  4. 4

    Verifiera (valfritt)

    Ange HMAC-hemligheten (för HS256/384/512) eller den offentliga nyckeln (för RS256, ES256 osv.) för att bekräfta att signaturen är giltig.

Anatomi av en JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Varje segment är kodat med Base64URL (inte standard Base64). Headern har formatet JSON, till exempel {"alg":"HS256","typ":"JWT"}; payloaden har samma format, till exempel {"sub":"1234567890","name":"Alice","iat":1600000000}; och signaturen är en HMAC- eller RSA-signatur för header.payload.

Standardclaims (RFC 7519)

Claim Namn Anmärkningar
iss Utfärdare Vem som utfärdade tokenet
sub Subjekt Vem tokenet handlar om
aud Mottagare Vem tokenet är avsett för
exp Utgångstid Unix-tidsstämpel; avvisas efter denna tid
nbf Inte före Unix-tidsstämpel; avvisas före denna tid
iat Utfärdat vid Unix-tidsstämpel för när tokenet skapades
jti JWT-ID Unik identifierare för återkallningslistor

Algoritmer som stöds

alg-värde Nyckeltyp
HS256/HS384/HS512 Delad HMAC-hemlighet
RS256/RS384/RS512 Offentlig RSA-nyckel
ES256/ES384 Offentlig ECDSA-nyckel
PS256/PS384 Offentlig RSA-PSS-nyckel
EdDSA / Ed25519 Edwards-kurva
none Lita aldrig på detta, osignerade token

Fällan alg: none

Tidiga JWT-bibliotek tillät "alg": "none"-token och godtog dem naivt som giltiga. Gör alltid följande:

  • Vitlista de algoritmer som din applikation accepterar.
  • Avvisa alg: none ovillkorligen.
  • Avvisa alg: HS256 när din verifieringskod förväntar sig RS256 (attacken med ”algoritmförväxling”).

Vad JWT inte är

  • Inte krypterat. Headern och payloaden är base64-kodade, vilket är trivialt att avkoda. Lägg aldrig hemligheter i en JWT utan att kapsla in den i JWE.
  • Inte återkallbart som standard. När en JWT väl är utfärdad är den giltig fram till exp. För återkallelse behöver du en svartlista eller kort giltighetstid plus uppdateringstoken.
  • Inte en ersättning för sessionscookies i alla användningsfall. Ogenomskinliga token som lagras på serversidan är ofta enklare och säkrare.

Vanliga misstag

  • Att lita på headern. kid och alg kommer från själva tokenet. En komprometterad server kan sätta dem godtyckligt; validera alltid mot en fast lista.
  • Att ignorera avvikelser i nbf och iat. Klockdrift gör att iat > now kan inträffa. Tillåt en liten marginal (30–60 s).
  • Att logga hela JWT:er. Payloaden innehåller ofta användar-ID:n, e-postadresser och behörigheter, PII som inte bör hamna i stdout.
  • Att använda HS256 med en svag hemlighet. En hemlighet på 16 tecken kan knäckas med brute force på några minuter. Använd minst 256 bitar slumpmässig entropi.

Vanliga frågor

Nej. Avkodningen sker i din webbläsare. Tokenet förvaras lokalt – vilket är viktigt eftersom JWT:er ofta innehåller sessionsdata, användar-ID:er och behörigheter.

Ja. Om du klistrar in den delade HMAC-secreten eller den PEM-kodade offentliga nyckeln sker verifieringen i din webbläsare. Nyckeln lämnar aldrig din dator.

Det innebär att tokenet inte är signerat. Acceptera aldrig sådana tokens i produktion – de kan lätt förfalskas. Flera betydande CVE-fejl handlade specifikt om bibliotek som standard accepterade alg: none.

JWT-signering bekräftar äkthet, inte sekretess. Headern och payload är kodade med Base64URL, vilket kan omvändas. För säkerhetens skull bör man använda JWE (JSON Web Encryption) runt JWT eller undvika att inkludera känslig data i payload.

Relaterade verktyg

Verktyget finns på andra språk