Dekodér JWT
Vložte JSON Web Token a přečtěte si jeho hlavičku a payload jako formátovaný JSON. Čas vydání a expirace se zobrazí jako data a uvidíte i informaci, zda je token právě platný. Dekódování probíhá celé ve vašem prohlížeči, což je důležité, pokud jde o aktivní přihlašovací údaj.
0 znaků · 0 slov · 0 řádků
0 znaků · 0 slov · 0 řádků
Vše běží přímo v této záložce prohlížeče. Váš text se nikam nenahrává ani neukládá.
Registrované claimy
Sedm názvů claimů definovaných v RFC 7519 §4.1. Všechny jsou volitelné; časy jsou v sekundách od 1. 1. 1970 UTC.
| Claim | Význam |
|---|---|
iss | Vydavatel: kdo token vytvořil a podepsal |
sub | Subjekt: uživatel nebo entita, které se token týká |
aud | Příjemce: komu je token určen |
exp | Čas vypršení: po tomto okamžiku token odmítnout |
nbf | Platí od: před tímto okamžikem token odmítnout |
iat | Vydáno: kdy byl token vytvořen |
jti | ID JWT: jedinečný identifikátor, brání opakovanému použití |
Běžné hodnoty alg
| Hodnota alg | Význam |
|---|---|
HS256 | HMAC se SHA-256; jedno sdílené tajemství podepisuje i ověřuje |
RS256 | Podpis RSA PKCS#1 v1.5 se SHA-256; soukromý klíč podepisuje, veřejný ověřuje |
PS256 | RSA-PSS se SHA-256 |
ES256 | ECDSA na křivce P-256 se SHA-256; krátké podpisy |
EdDSA | Podpisy Ed25519 nebo Ed448 |
none | Nepodepsaný token; servery by ho měly odmítnout |
Co obsahuje JSON Web Token
JWT je definován v RFC 7519 (květen 2015), které doporučuje vyslovovat zkratku jako anglické slovo „jot“. Běžná podepsaná podoba jsou tři řetězce Base64url spojené tečkami: header.payload.signature. Hlavička (header) uvádí v poli alg podpisový algoritmus, například HS256 nebo RS256, a často také ID klíče v poli kid. Payload obsahuje claimy, tedy pole JSON jako sub (uživatel), iss (vydavatel), aud (zamýšlený příjemce) a exp, nbf a iat, což jsou časy v sekundách od 1. ledna 1970 UTC. Dekodér tyto tři části převede na váš místní čas a ISO 8601 a sdělí, zda token už vypršel, ještě není platný, nebo je uvnitř svého časového okna.
Base64url je kódování, nikoli šifrování, takže kdokoli, kdo token drží, si může přečíst jeho payload přesně tak, jako to dělá tato stránka. Do claimů nikdy nevkládejte hesla, čísla karet ani jiná tajemství. Token s pěti částmi oddělenými tečkami je JWE, tedy šifrovaný token; jeho obsah nelze bez klíče přečíst a dekodér to oznámí. Úvodní „Bearer “ zkopírované z hlavičky Authorization se odstraní automaticky.
Proč se zde podpis neověřuje
Podpis dokládá, že hlavičku a payload vytvořil někdo, kdo drží klíč, a že se od té doby nezměnily. K jeho ověření je potřeba onen klíč: sdílené tajemství u algoritmů HMAC jako HS256, nebo veřejný klíč vydavatele u RS256, ES256 či EdDSA. Vkládat produkční podpisové tajemství do jakékoli webové stránky je špatný nápad a dekodér, který by bez něj předstíral, že za token ručí, by vzbuzoval falešný pocit jistoty, proto tento nástroj podpis zobrazuje, ale neověřuje. Berte, co vidíte, jako tvrzení, které token uvádí, ne jako fakt.
Ověřování patří na váš server, s udržovanou knihovnou a pevně nastaveným očekávaným algoritmem. Vysvětlují to dvě historické chyby: přijímání alg „none“, které komukoli umožní zfalšovat nepodepsaný token, a záměna algoritmu, kdy se server očekávající RS256 nechá oklamat, aby ověřil podpis HS256 s veřejným klíčem použitým jako tajemství HMAC. Dekodér slouží k ladění: zjistíte, jaké claimy poskytovatel vydává, odhalíte chybného příjemce (aud) nebo zjistíte, že relace selhala, protože exp vypršelo před minutou. Chcete-li si přečíst surové segmenty Base64url, použijte dekodér Base64.
Často kladené otázky
- Je bezpečné vložit skutečný přístupový token do dekodéru JWT?
- Na této stránce token váš prohlížeč nikdy neopustí. Platný token ale do vypršení funguje jako heslo, proto raději používejte vypršené nebo testovací tokeny a ostré nedávejte do snímků obrazovky ani do chatů.
- Proč se můj token zobrazuje jako prošlý, i když byl právě vydán?
- Nejdřív zkontrolujte hodiny v zařízení. Někteří vydavatelé dávají přístupovým tokenům platnost jen několik minut a token zkopírovaný z logu může být starší, než vypadá. Hodnota exp zapsaná v milisekundách místo sekund způsobí opak a skončí o tisíce let v budoucnosti.
- Může někdo změnit payload mého JWT?
- Mohou ho upravit a znovu zakódovat, ale podpis už nebude odpovídat. Server, který ověřuje podpisy správným klíčem a algoritmem, upravený token odmítne.
- Jaký je rozdíl mezi JWS a JWE?
- JWS (RFC 7515) je podepsaný, má tři části a může ho číst kdokoli. JWE (RFC 7516) je šifrovaný, má pět částí a payload přečte jen držitel klíče.
- Zneplatní odhlášení token JWT?
- Sám o sobě ne. Podepsané JWT zůstává platné do exp, pokud server nevede seznam zakázaných tokenů nebo nekontroluje záznam o relaci, proto se přístupovým tokenům obvykle dává krátká platnost.