/jwt

JWT-dekoder: Dekod og inspiser JSON Web Tokens

Dekod JSON Web Tokens (JWT) lokalt i nettleseren og inspiser header, payload og utløpstid.

Slik fungerer det

En JWT består av tre Base64URL-deler: header, payload og signatur. Verktøyet dekoder de to første og viser tidsstempler som iat og exp i lesbar form. Signaturen verifiseres ikke, det krever en hemmelig nøkkel. Alt skjer lokalt i nettleseren.

Om dette verktøyet

JSON Web Token (JWT) er et kompakt, signert tekstformat for å utveksle påstander mellom parter, typisk brukt for autentisering og autorisering i moderne web-API-er. En JWT består av tre deler adskilt av punktum: header, payload og signatur. Dette verktøyet dekoder JWT-er slik at du kan se hva som ligger i header og payload, sjekker gyldigheten av signaturen mot en hemmelighet eller offentlig nøkkel, og hjelper deg å forstå felt som `exp`, `iss`, `aud` og `sub`. Alt kjører lokalt, tokenet ditt blir aldri sendt til noen server, som er avgjørende når du feilsøker med ekte access tokens.

Slik bruker du det

  1. Lim inn en JWT (tre base64url-strenger separert med punktum) i tekstfeltet.
  2. Header og payload dekodes automatisk og vises som formatert JSON.
  3. Sjekk `exp` (utløp) og `iat` (utstedt), verktøyet konverterer Unix-timestamps til lesbar dato.
  4. Valgfritt: lim inn din hemmelighet (HS256) eller offentlige nøkkel (RS256/ES256) for å verifisere signaturen.

Eksempler

Struktur
InneyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiT2xhIn0.5xB4pk9L-...
Tre base64url-deler: header ({"alg":"HS256"}), payload ({"sub":"123","name":"Ola"}) og HMAC-SHA256-signatur.
Typisk payload
Inn{ "sub": "user-42", "iss": "https://auth.example.com", "aud": "api.example.com", "exp": 1735689600, "iat": 1735686000 }
`sub` = brukerens ID, `iss` = utsteder, `aud` = mottaker/audience, `exp` = utløpstidspunkt, `iat` = utstedelsestidspunkt (alle som Unix-timestamps).

Vanlige bruksområder

  • Feilsøke API-kall som feiler med 401/403 ved å inspisere selve tokenet.
  • Verifisere at klienten din setter riktig `aud` og `iss` i tokens den sender.
  • Sjekke om et token er utløpt uten å måtte forsøke API-kallet.
  • Se hvilke roller/scopes en bruker faktisk har basert på claims.
  • Verifisere signaturen fra en identitetsleverandør (Auth0, Okta, Azure AD, Google) mot deres JWKS.
  • Undervise nye utviklere om hvordan JWT er strukturert.

Ofte stilte spørsmål

Er payload-en kryptert?
Nei. En signert JWT er bare base64url-kodet, ikke kryptert. Alle med tokenet kan lese hva som står i header og payload. Ikke legg sensitive data (passord, personnummer, kredittkort) i en JWT.
Hva er forskjellen på HS256 og RS256?
HS256 er symmetrisk (HMAC-SHA-256), samme hemmelige nøkkel signerer og verifiserer. RS256 er asymmetrisk (RSA + SHA-256), privatnøkkelen signerer, offentlig nøkkel verifiserer. RS256 (eller ES256) foretrekkes i systemer der signereren og verifiserer ikke skal dele hemmeligheter.
Sender verktøyet tokenet mitt til noen?
Nei. Alt skjer i nettleseren med SubtleCrypto, hverken tokenet eller nøkkelen din forlater siden. Trygt å bruke på ekte produksjonstokens.
Hva betyr «alg: none»?
«none» betyr at tokenet ikke er signert. Dette er en kjent JWT-svakhet, servere som blindt aksepterer `alg: none` kan lures til å godta hva som helst. Verifiseringsbiblioteket ditt bør alltid ha en tillatt algoritme-liste.

Teknisk bakgrunn

JWT er definert i RFC 7519, med underliggende signaturformater i JWS (RFC 7515) og valgfri kryptering i JWE (RFC 7516). Vanlige algoritmer er HS256/384/512 (HMAC), RS256/384/512 (RSA-PKCS1), ES256/384/512 (ECDSA) og PS256/384/512 (RSA-PSS). Signaturen dekkes over `header.payload` etter base64url-koding, og signeres med den valgte algoritmen. Ved verifisering må du sjekke både signaturen OG `exp`, `nbf` og `iss`/`aud`-claims, ellers kan et gyldig signert token fortsatt være falskt eller utløpt.