JWT-dekoder

Lim inn et JSON Web Token for å se header og payload som formatert JSON, tidspunktene exp, iat og nbf som datoer og om tokenet er utløpt. Signaturer kan verifiseres lokalt med en hemmelig nøkkel eller en offentlig nøkkel.

Header

Payload (nyttelast)

Claims (påstander)

Signatur

Verifiser signatur

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Lim inn hele tokenet: tre Base64URL-deler atskilt med punktum.
  2. Les den dekodede headeren og payloaden. Claimene exp, iat og nbf vises som datoer, med en advarsel hvis tokenet er utløpt eller ikke gyldig ennå.
  3. For å verifisere signaturen skriver du inn den delte hemmelige nøkkelen for HS256, HS384 eller HS512, eller limer inn den offentlige nøkkelen i PEM-format for RS-, PS- eller ES-algoritmer.
  4. Kontroller at claimene for utsteder, mottaker og subjekt samsvarer med det applikasjonen din forventer.

Slik er et JWT bygd opp

Et JSON Web Token (RFC 7519) har tre deler atskilt med punktum: header.payload.signature. Header og payload er JSON-objekter kodet som Base64URL uten utfylling. Derfor begynner tokener nesten alltid med eyJ, den kodede formen av en innledende {". Signaturen beregnes over de to første delene nøyaktig slik de står i tokenet.

  • Header: signeringsalgoritmen i alg, vanligvis "typ": "JWT", og ofte en kid som angir nøkkelen.
  • Payload (nyttelast): claimene (påstandene), for eksempel hvem brukeren er, hvem som utstedte tokenet og når det utløper.
  • Signatur: en HMAC-, RSA- eller ECDSA-signatur som beviser at header og payload ikke er endret.

Et token med fem deler er en kryptert JWE. Innholdet kan ikke leses uten dekrypteringsnøkkelen.

Registrerte claims

ClaimNavnBetydning
issUtsteder (issuer)Hvem som opprettet og signerte tokenet
subSubjekt (subject)Hvem tokenet gjelder, vanligvis en bruker-ID
audMottaker (audience)Tjenesten tokenet er ment for
expUtløpstid (expiration time)Etter dette tidspunktet må tokenet avvises
nbfIkke før (not before)Før dette tidspunktet må tokenet avvises
iatUtstedt (issued at)Når tokenet ble opprettet
jtiJWT-IDUnik identifikator som brukes til å oppdage gjenbruk (replay)

Tidspunktene er NumericDate-verdier: sekunder siden 1. januar 1970 UTC, ikke millisekunder. Dekoderen viser dem som lesbare datoer og sammenligner dem med klokken på enheten din.

Dekoding er ikke verifisering

Hvem som helst kan dekode et JWT, fordi payloaden bare er kodet, ikke kryptert. Legg derfor aldri passord eller andre hemmeligheter i den. Tillit får du bare ved å kontrollere signaturen med riktig nøkkel, og en server som tar imot tokener, bør dessuten:

  • bare tillate algoritmen den forventer, og avvise "alg": "none", som markerer et usignert token;
  • aldri la tokenets header velge mellom HMAC og RSA, ellers kan en angriper signere et forfalsket token med den offentlige nøkkelen din brukt som HMAC-hemmelighet;
  • kontrollere exp, nbf, iss og aud ved hver forespørsel.

Den valgfrie verifiseringen på denne siden bruker Web Crypto API, som er innebygd i nettleseren din. Dekoding og verifisering skjer på enheten din, og ingenting lastes opp. Som en generell regel bør du aldri lime inn signeringsnøkler fra produksjon eller aktive tokener på nettsteder du ikke stoler på.

Ofte stilte spørsmål

Er det trygt å lime inn et JWT i denne dekoderen?

Tokenet dekodes og verifiseres av JavaScript i nettleseren din og sendes aldri til noen server. Husk likevel at et token som ikke er utløpt, fungerer som et passord for den som har det. Bruk derfor helst testtokener eller utløpte tokener når du deler skjermbilder eller logger.

Kan jeg dekode et JWT uten den hemmelige nøkkelen?

Ja. Header og payload er vanlig Base64URL-kodet JSON, så de kan leses uten noen nøkkel. Den hemmelige eller offentlige nøkkelen trengs bare for å verifisere signaturen.

Hvorfor sier dekoderen at tokenet mitt er utløpt?
Claimet exp ligger før gjeldende tidspunkt på enheten din. Hvis tokenet fortsatt skulle vært gyldig, bør du sjekke systemklokken og levetiden for tokenet som utstederen har konfigurert.
Hvilke signaturalgoritmer kan verifiseres?

HS256, HS384 og HS512 med en delt hemmelig nøkkel, og RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 og ES512 med en offentlig nøkkel i PEM-format.

Hva betyr "alg": "none"?

Det markerer et usikret JWT med tom signatur, definert i RFC 7518. Hvem som helst kan opprette eller endre et slikt token, så en server som forventer signerte tokener, må alltid avvise det.