JWT-dekoder
Dekod og inspiser en JSON Web Token. Signaturverifisering krever signeringsnøkkelen og må skje på serversiden — dette verktøyet viser kun innholdet.
Header
Payload
Signatur
- Kopier JWT-en fra appen din, API-responsen eller Authorization-headeren.
- Lim den inn i boksen. Dekoding skjer automatisk mens du skriver.
- Les den dekodede headeren og payloaden; signaturen vises som den er, til referanse.
- Sjekk oversikten over tidskrav (iat, exp, nbf) for å oppdage utløpte tokens.
Hva gjør det?
En JSON Web Token består av tre base64url-kodede segmenter skilt med punktum: header.payload.signature. Header og payload er JSON; signaturen er en HMAC- eller RSA/ECDSA-utdata over de to første segmentene. Dette verktøyet splitter på punktumene, base64url-dekoder hver del, parser JSON-en, og viser standard tidskrav som exp som leselige datoer. Det verifiserer ikke signaturen — se FAQ nedenfor for hvorfor.
Eksempel
Eksempeltokenet fra JWT-spesifikasjonen (HS256 signert med hemmeligheten your-256-bit-secret):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c Dekodet header:
{
"alg": "HS256",
"typ": "JWT"
} Dekodet payload:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
} Hvorfor er JWT-signaturen min merket som ugyldig?
Denne dekoderen sjekker ikke signaturer (se FAQ), men hvis en verifiserer på serversiden avviser tokenet ditt, er dette de vanligste årsakene.
- Feil hemmelighet eller nøkkel. Bare ett tegn til forskjell i HMAC-hemmeligheten gir en helt annen signatur. Sjekk at JWT_SECRET-miljøvariabelen på den validerende tjenesten stemmer med utstederens.
- Algoritme-mismatch. Et token signert med HS256 kan ikke verifiseres med RS256. Sjekk alg-claimet i headeren og se til at verifisereren er konfigurert for samme algoritme.
- Utløpt token. Selv en korrekt signert JWT feiler validering når exp ligger i fortiden. Oversikten over tidskrav viser dette eksplisitt etter dekoding.
- Klokkeforskjell. nbf (not-before) litt fram i tid pluss serverklokke som driver, gir "token not yet valid"-feil. Tillat en liten slingringsmonn (f.eks. 60 sekunder) i verifisereren.
- Mellomrom i det limte tokenet. Kopier-og-lim inkluderer iblant et innledende mellomrom eller et etterfølgende linjeskift. En JWT må være nøyaktig header.payload.signature uten omkringliggende mellomrom.
- alg: none. Hvis headeren sier "alg": "none", er tokenet usignert. Avvis slike i verifisereren — behandle dem aldri som gyldige.
Ofte stilte spørsmål
Kan dette verktøyet verifisere JWT-signaturen?
Nei, og det er bevisst. Å verifisere en signatur krever signeringsnøkkelen — en HMAC-delt hemmelighet eller en asymmetrisk offentlig nøkkel. Den nøkkelen hører hjemme på serveren som utsteder eller konsumerer tokenet, ikke limt inn på en nettside. Dette verktøyet dekoder og viser kun; verifisering skjer på serversiden i backenden din.
Hva ligger i hvert av de tre JWT-segmentene?
En JWT er header.payload.signature. Headeren er JSON som beskriver algoritmen (alg) og token-typen. Payloaden er JSON med claims som sub, iat, exp. Signaturen er den base64url-kodede utdataen fra å signere de to første segmentene med hemmeligheten eller privatnøkkelen. De to første er kun kodet, ikke kryptert.
JWT-en min er utløpt — hvordan ser jeg det?
Se på exp-claimet i payloaden. Det er et Unix-tidsstempel i sekunder. Hvis Date.now() / 1000 er større enn exp, er tokenet utløpt. Dette verktøyet viser exp, iat og nbf som leselige datoer under payloaden, så du ser det med ett blikk uten å regne selv.
Hva betyr alg: none og hvorfor er det farlig?
alg: none er en JWT-funksjon der signaturen er tom og ikke sjekkes. Mange bibliotek har historisk akseptert slike tokens, noe som har latt angripere forfalske JWT-er ved å lage en payload og sette alg til none. Ser du denne header-verdien, er tokenet usignert — stol ikke på en server som aksepterer det.
Lagrer dere JWT-ene jeg limer inn her?
Nei. Vi lagrer ingen token du limer inn i dekoderen. Det du slipper inn, forkastes når du lukker eller oppdaterer fanen — ingenting logges, og det finnes ingen spor hos oss av tokens du har inspisert. Likevel: en JWT gir tilgang til exp utløper — behandle den som et passord og roter ethvert produksjonstoken du debugger.
Signatur-seksjonen viser en klump jeg ikke kan lese — er det normalt?
Ja. Signaturen er binær utdata fra HMAC eller RSA/ECDSA, base64url-kodet. Den er ikke ment å være leselig — den fungerer kun som en kryptografisk sjekk. Den dekodede headeren og payloaden er JSON-delene du handler på. En tom signatur betyr at tokenet er usignert (alg: none).