Så använder du verktyget
- Klistra in hela tokenen: tre Base64URL-delar åtskilda av punkter.
- Läs det avkodade huvudet och nyttolasten. Anspråken exp, iat och nbf visas som datum, med en varning om tokenen har gått ut eller ännu inte är giltig.
- Vill du verifiera signaturen öppnar du Verifiera signatur och anger den delade hemliga nyckeln för HS256, HS384 eller HS512, eller klistrar in den publika nyckeln i PEM-format för RS-, PS- eller ES-algoritmer.
- Kontrollera att anspråken för utfärdare, mottagare och subjekt stämmer med det som ditt program förväntar sig.
Så är en JWT uppbyggd
En JSON Web Token (RFC 7519) består av tre delar åtskilda av punkter: header.payload.signature. Huvudet och nyttolasten är JSON-objekt som kodats som Base64URL utan utfyllnad, och därför börjar tokens nästan alltid med eyJ, den kodade formen av en inledande {". Signaturen beräknas över de två första delarna exakt som de står i tokenen.
- Huvud (header): signeringsalgoritmen i
alg, oftast"typ": "JWT"och ofta ettkidsom anger vilken nyckel som används. - Nyttolast (payload): anspråken, till exempel vem användaren är, vem som utfärdade tokenen och när den går ut.
- Signatur: en HMAC-, RSA- eller ECDSA-signatur som bevisar att huvudet och nyttolasten inte har ändrats.
En token med fem delar är en krypterad JWE; dess innehåll kan inte läsas utan dekrypteringsnyckeln.
Registrerade anspråk
| Anspråk | Namn | Betydelse |
|---|---|---|
iss | Utfärdare (issuer) | Vem som skapade och signerade tokenen |
sub | Subjekt (subject) | Vem tokenen gäller, oftast ett användar-ID |
aud | Mottagare (audience) | Tjänsten som tokenen är avsedd för |
exp | Utgångstid | Efter denna tidpunkt måste tokenen avvisas |
nbf | Inte före | Före denna tidpunkt måste tokenen avvisas |
iat | Utfärdad | När tokenen skapades |
jti | JWT-ID | Unik identifierare som används för att upptäcka återuppspelning |
Tider anges som NumericDate-värden: sekunder sedan den 1 januari 1970 UTC, inte millisekunder. Avkodaren visar dem som läsbara datum och jämför dem med klockan på din enhet.
Avkodning är inte verifiering
Vem som helst kan avkoda en JWT, eftersom nyttolasten bara är kodad, inte krypterad; lägg aldrig lösenord eller andra hemligheter i den. Tillit uppstår bara när signaturen kontrolleras med rätt nyckel, och en server som tar emot tokens bör dessutom:
- bara tillåta den algoritm som den förväntar sig och avvisa
"alg": "none", som markerar en osignerad token; - aldrig låta tokenens huvud välja mellan HMAC och RSA, eftersom en angripare annars kan signera en förfalskad token med din publika nyckel som HMAC-hemlighet;
- kontrollera
exp,nbf,issochaudvid varje anrop.
Den valfria verifieringen på den här sidan använder Web Crypto API, som är inbyggt i din webbläsare. Avkodning och verifiering sker på din enhet och inget laddas upp. Som en allmän regel bör du aldrig klistra in signeringsnycklar från produktion eller aktiva tokens på webbplatser som du inte litar på.
Vanliga frågor
Är det säkert att klistra in en JWT i den här avkodaren?
Tokenen avkodas och verifieras av JavaScript i din webbläsare och skickas aldrig till någon server. Tänk på att en token som inte har gått ut fungerar som ett lösenord för den som har den, så använd hellre testtokens eller utgångna tokens när du delar skärmbilder eller loggar.
Kan jag avkoda en JWT utan den hemliga nyckeln?
Ja. Huvudet och nyttolasten är vanlig JSON som kodats med Base64URL, så de kan läsas utan någon nyckel. Den hemliga eller publika nyckeln behövs bara för att verifiera signaturen.
Varför säger avkodaren att min token har gått ut?
exp ligger före den aktuella tiden på din enhet. Om tokenen fortfarande borde vara giltig kontrollerar du systemklockan och den livslängd för tokens som utfärdaren har konfigurerat.Vilka signaturalgoritmer kan verifieras?
HS256, HS384 och HS512 med en delad hemlig nyckel, samt RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 och ES512 med en publik nyckel i PEM-format.
Vad betyder "alg": "none"?
Det markerar en osäkrad JWT med tom signatur, enligt definitionen i RFC 7518. Vem som helst kan skapa eller ändra en sådan token, så en server som förväntar sig signerade tokens måste alltid avvisa den.