Čo je JWT (JSON Web Token)?
JWT (JSON Web Token) je navrhovaný internetový štandard (RFC 7519) pre vytváranie prístupových tokenov vo formáte JSON s voliteľným podpisom a šifrovaním. Používa sa predovšetkým na autentifikáciu používateľov a bezpečný prenos údajov medzi aplikáciami.
Definícia JWT (JSON
Čo je JWT
JSON Web Token (skrátene JWT, vyslovuje sa „džot") je navrhovaný internetový štandard definovaný v RFC 7519 (máj 2015). JWT umožňuje vytvárať kompaktné, URL-bezpečné tokeny, ktorých obsah (payload) je JSON objekt s tzv. claims (tvrdeniami) — napríklad „tento používateľ je prihlásený ako administrátor".
Tokeny sa podpisujú buď zdieľaným tajným kľúčom (HMAC algoritmus) alebo párom verejný/súkromný kľúč (RSA alebo ECDSA). Autori štandardu sú Michael B. Jones (Microsoft), John Bradley (Ping Identity) a Nat Sakimura (NRI).
Štruktúra JWT
JWT sa skladá z troch častí oddelených bodkou:
- Header (hlavička) — obsahuje typ tokenu (JWT) a použitý podpisový algoritmus (napr. HS256, RS256)
- Payload (obsah) — JSON s claims: registrované (iss, exp, sub), verejné a súkromné tvrdenia
- Signature (podpis) — kryptografický podpis hlavičky a obsahu, ktorý zaručuje integritu tokenu
JWT sa často používa v kontexte Single Sign-On (SSO) a bezstavovej autentifikácie. Token sa uloží na strane klienta (v cookie alebo localStorage) a pri každej požiadavke sa posiela serveru, ktorý overí jeho platnosť bez nutnosti dopytovať databázu.
Praktický príklad
Príklad: Používateľ sa prihlási do webovej aplikácie menom a heslom.
Server overí prihlasovacie údaje a vygeneruje JWT token obsahujúci ID používateľa, jeho rolu a čas expirácie. Token vyzerá napríklad: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U. Prehliadač ho uloží a pri každej ďalšej požiadavke ho posiela v hlavičke Authorization: Bearer <token>.
Často kladené otázky
Čo je JWT a na čo slúži?
JWT (JSON Web Token) je kompaktný, digitálne podpísaný token vo formáte JSON. Slúži na bezpečnú autentifikáciu a prenos informácií medzi aplikáciami bez nutnosti ukladať stav na serveri.
Z čoho sa skladá JWT token?
JWT sa skladá z troch častí oddelených bodkou: hlavičky (header) s algoritmom, obsahu (payload) s údajmi o používateľovi a podpisu (signature), ktorý zaručuje, že token nebol zmenený.
Je JWT bezpečný?
JWT je bezpečný, ak sa správne implementuje — používate silný podpisový algoritmus, nastavíte krátku expiráciu a token prenášate výhradne cez HTTPS. Nikdy neukladajte citlivé dáta priamo do payloadu, pretože ten je len zakódovaný (Base64), nie šifrovaný.
Aký je rozdiel medzi JWT a session cookie?
Session cookie odkazuje na reláciu uloženú na serveri. JWT obsahuje všetky informácie priamo v tokene (bezstavový prístup) — server nemusí uchovávať relácie, čo zjednodušuje škálovanie.
Ako dlho by mal byť JWT platný?
Pre access tokeny sa odporúča krátka platnosť (5-15 minút). Na obnovenie prístupu sa používa refresh token s dlhšou platnosťou (hodiny až dni), ktorý je uložený bezpečnejšie.
Súvisiace pojmy
Potrebujete pomôcť s webom?
Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.