Viser på Norsk Bytt til engelsk

JWT-dekoder

Dekod og inspiser en JSON Web Token. Signaturverifisering krever signeringsnøkkelen og må skje på serversiden — dette verktøyet viser kun innholdet.

  1. Kopier JWT-en fra appen din, API-responsen eller Authorization-headeren.
  2. Lim den inn i boksen. Dekoding skjer automatisk mens du skriver.
  3. Les den dekodede headeren og payloaden; signaturen vises som den er, til referanse.
  4. 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).