Struktura a formát JSON Web Tokenu
JSON Web Token (JWT) je kompaktní a samostatný prostředek pro bezpečný přenos informací mezi stranami ve formátu JSON. Token se skládá ze tří částí oddělených tečkou:
- Hlavička (Header): Obsahuje informace o typu tokenu a použitém šifrovacím algoritmu.
- Payload (Užitečné zatížení): Obsahuje samotná data (tvrzení neboli claims) o subjektu a další metadata.
- Podpis (Signature): Slouží k ověření, že odesílatel JWT je skutečně ten, za koho se vydává, a že zpráva nebyla po cestě změněna.
Všechny tyto tři části jsou samostatně zakódovány pomocí schématu Base64URL, což umožňuje bezpečný přenos v rámci parametrů URL, HTTP hlaviček nebo těla požadavků.
Účel hlavičky a payloadu v JWT
Hlavička definuje metadata tokenu. Mezi nejčastější claims v hlavičce patří alg (označující kryptografický algoritmus, například HS256 nebo RS256) a typ (určující typ tokenu, obvykle JWT).
Payload nese samotná aplikační data. Standard definuje několik registrovaných tvrzení, která sice nejsou povinná, ale jsou vysoce doporučená pro zajištění interoperability:
iat(Issued At): Čas vystavení tokenu.exp(Expiration Time): Čas, kdy platnost tokenu vyprší a po kterém musí být odmítnut.sub(Subject): Subjekt, kterého se token týká.iss(Issuer): Vydavatel tokenu.
Dekódování versus ověřování podpisu
Mezi dekódováním a ověřením JWT je zásadní rozdíl. Dekódování je pouze proces reverzního převodu formátu Base64URL zpět do čitelného formátu JSON. K dekódování nepotřebujete žádný tajný klíč ani certifikát. Kdokoliv, kdo má k tokenu přístup, si může jeho obsah snadno přečíst.
Ověření (verifikace) naopak vyžaduje znalost sdíleného tajného klíče (pro symetrické algoritmy) nebo veřejného klíče (pro asymetrické algoritmy). Bez ověření podpisu nelze garantovat, že s daty v payloadu nikdo nemanipuloval. Tento dekodér slouží výhradně k rychlé inspekci obsahu a neověřuje podpis JWT, ani nevyžaduje zadání podpisového klíče.
Pravidla zpracování a chybové stavy
Nástroj analyzuje vstupní řetězec a aplikuje následující pravidla pro validaci:
- Prázdný vstup: Pokud do pole nevložíte žádný text, nástroj zůstane v základním stavu Připraveno. Vložte JWT pro dekódování..
- Formát tokenu: Vstup musí obsahovat přesně tři části oddělené tečkou. V opačném případě se zobrazí chyba Neplatný formát JWT – očekávány tři části oddělené tečkou..
- Délka vstupu: Pokud je řetězec neúměrně dlouhý, systém proces zastaví s hlášením Tento řetězec je příliš dlouhý na to, aby šlo o skutečný JWT..
- Chyba Base64URL: Pokud hlavičku nebo payload nelze dekódovat kvůli chybné struktuře Base64URL, zobrazí se hlášení Nepodařilo se dekódovat hlavičku – neplatný formát Base64URL. nebo Nepodařilo se dekódovat payload – neplatný formát Base64URL..
- Chyba JSON: Pokud jsou data úspěšně převedena z Base64URL, ale neodpovídají validnímu formátu JSON, nástroj vrátí chybu Hlavička není platný JSON. nebo Payload není platný JSON..
Při výskytu jakékoliv z těchto chyb se dekódované oblasti skryjí. Po stisknutí tlačítka Vymazat se pole vyčistí a kurzor se automaticky vrátí do vstupního pole.
Ochrana soukromí při dekódování
Zpracování tokenů probíhá lokálně. Váš token se dekóduje přímo v prohlížeči. Na servery BroBroGo se nic nenahrává.. Nedochází k žádnému odesílání dat na externí servery, což eliminuje riziko úniku citlivých informací obsažených v payloadu.
Často kladené otázky
Je bezpečné sem vložit můj JWT? Ano. Dekódování probíhá kompletně ve vašem prohlížeči – váš token se na servery BroBroGo nikdy neposílá.
Ověřuje tento nástroj podpis? Ne. Nástroj pouze dekóduje hlavičku (header) a payload, abyste si je mohli přečíst. K ověření podpisu je potřeba tajný klíč (secret) nebo veřejný klíč, které tento nástroj nikdy nevyžaduje.
Jak zjistím, zda platnost mého tokenu vypršela? Dekodér načte claim exp a vedle dekódovaného tokenu zobrazí stavový štítek – platný, expirovaný, zatím neplatný nebo bez expirace.
Co znamená stav Bez expirace?
Tento stav nastává v situaci, kdy analyzovaný token neobsahuje v payloadu claim exp. Nástroj v takovém případě nemůže vyhodnotit časové omezení platnosti.