Utilia

JWT-avkodare

Avkoda header och payload i en JWT, läs exp, iat och nbf som datum och verifiera HS256-, RS256-, PS256-, ES256- och EdDSA-signaturer lokalt.

Token är inloggningsuppgifter. Det här verktyget avkodar och verifierar dem i din webbläsare och skickar dem aldrig någonstans.

Verifiera signaturen

HS256/384/512: ange den delade hemligheten. RS, PS, ES (256/384/512) och EdDSA: klistra in den publika nyckeln som PEM (public key, RSA public key eller certifikat) eller JWK (i en JWK Set väljs nyckeln efter kid).

Så avkodar du en JWT

  1. Klistra in din token i fältet JSON Web Token. Ett helt Authorization: Bearer …-värde fungerar också: prefixet Bearer och eventuella radbrytningar tas bort.
  2. Token avkodas medan du skriver (eller när du klickar på Avkoda). Header och Payload visas som formaterad JSON, var och en med en egen Kopiera-knapp.
  3. Läs tabellen Tidsanspråk: exp, nbf och iat visas med sitt råa värde, datumet i din tidszon, en relativ tid (”om 3 timmar”, ”för 2 dagar sedan”) och en status som Utgången eller Inte giltig än.
  4. Läs varningarna ovanför resultatet, till exempel när alg är none eller när ett datum ser ut att vara i millisekunder.
  5. Vill du kontrollera signaturen fyller du i nyckeln under Verifiera signaturen och klickar på Verifiera signatur.

Att avkoda är inte att verifiera

En JWT består av tre Base64url-delar åtskilda av punkter: header.payload.signature. Header och payload är bara kodade, inte krypterade, så vem som helst som har token kan läsa dem, och det här verktyget kan avkoda vilken token som helst utan nyckel. Det betyder också att en avkodad payload inte bevisar någonting: någon kan ha ändrat den. Bara en giltig signatur visar att token utfärdades av den som har nyckeln och att den inte har ändrats sedan dess. Därför står det ”Avkodad (signaturen är inte verifierad)” i statusraden tills du har verifierat den.

En token med fem delar är en JWE (krypterad JWT). Innehållet kan inte läsas utan dekrypteringsnyckeln, och verktyget talar om det för dig.

Verifiera signaturen

  • HS256, HS384, HS512 (HMAC): ange den delade hemligheten i fältet Hemlighet. Med Hemlighetens format anger du om den är vanlig text (UTF-8) eller Base64/Base64url, eftersom vissa leverantörer lagrar hemligheter i Base64. Du kan också klistra in en JWK av typen oct. Om hemligheten är kortare än hashens utdata (32 byte för HS256) påpekar verktyget att den ligger under minimikravet i RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 och EdDSA: klistra in nyckeln i Publik nyckel (PEM eller JWK). Godkända PEM-block är PUBLIC KEY, RSA PUBLIC KEY och CERTIFICATE (nyckeln läses då ur X.509-certifikatet). En JWK eller en hel JWK Set fungerar också: den nyckel vars kid matchar headern används. Privata nycklar avvisas – en verifierare behöver aldrig någon. EdDSA stöder Ed25519 i webbläsare vars Web Crypto har stöd för det.

Verifieringen använder webbläsarens Web Crypto API. Resultatet ”Ogiltig signatur” betyder att nyckeln är fel eller att token har ändrats. Observera att algoritmen hämtas ur token-headern: en riktig server ska i stället låsa den förväntade algoritmen i sin konfiguration, annars kan en angripare välja den själv.

Säkerhet

  • Token är inloggningsuppgifter. Den som har en giltig åtkomsttoken kan oftast agera som ägaren tills den går ut. Det här verktyget avkodar och verifierar allt i din webbläsare och skickar aldrig token eller nyckeln någonstans. Undvik ändå att klistra in produktionstoken i verktyg du inte kan granska.
  • alg: none betyder att token är osignerad. Vem som helst kan förfalska en sådan, och en server måste avvisa den. Verktyget visar en varning och vägrar att ”verifiera” en sådan token.
  • Tidskontrollerna här använder datorns klocka utan någon marginal. Servrar tillåter ofta en eller ett par minuters klockavvikelse.
  • JWT-datum (NumericDate) anges i sekunder sedan 1 januari 1970 UTC. Ett värde med 13 siffror är troligen i millisekunder, vilket är en vanlig bugg.

Vanliga frågor

Kan verktyget säga om en token är giltig?

Det kan säga om signaturen stämmer med en nyckel du anger och om exp och nbf är uppfyllda just nu. Om token faktiskt godtas beror också på kontroller som bara servern känner till: förväntad utfärdare (iss), mottagare (aud), algoritm och återkallelse.

Varför misslyckas verifieringen trots rätt hemlighet?

Kontrollera Hemlighetens format: en Base64-hemlighet som skrivs in som text ger en annan nyckel. Se också till att inget mellanslag eller någon radbrytning har kommit med i hemligheten, eftersom HMAC-nycklar jämförs byte för byte.

Vad är skillnaden mellan RS256, PS256 och ES256?

Alla tre är signaturer med publik nyckel och SHA-256. RS256 använder RSA med PKCS#1 v1.5-utfyllnad, PS256 använder RSA med PSS-utfyllnad och ES256 använder ECDSA på kurvan P-256, vilket ger mycket kortare signaturer.

Var hittar jag en leverantörs publika nyckel?

Identitetsleverantörer publicerar en JWKS (JSON Web Key Set), oftast länkad från /.well-known/openid-configuration under jwks_uri. Öppna den själv och klistra in JSON-koden här. Verktyget väljer nyckeln efter kid och hämtar aldrig något.

Är det säkert att klistra in min token här?

Token stannar på din enhet: avkodning och verifiering sker lokalt och inget laddas upp. Vill du vara extra försiktig kan du använda en utgången token eller en testtoken när du bara behöver se strukturen.