Jak nástroj použít
- 1Vložte token do pole – s předponou „Bearer“ i bez ní. Hlavička a payload se dekódují průběžně při psaní.
- 2Podívejte se na řádek se stavem: podle claimů
expanbfukazuje, zda je token platný, zda už vypršel, nebo zda ještě neplatí. - 3Projděte si standardní claimy – vydavatele, subjekt, příjemce a časy – s časovými razítky převedenými na data ve vašem časovém pásmu.
- 4Pro ověření podpisu zadejte u tokenů
HS256sdílený tajný klíč, uRS256,ES256a dalších algoritmů s dvojicí klíčů vložte veřejný klíč nebo sadu JWK.
Co obsahuje JWT
JSON Web Token tvoří tři části v kódování Base64URL spojené tečkami: header.payload.signature. Hlavička (header) říká, jak je token podepsaný, například {"alg":"HS256","typ":"JWT"}. Payload obsahuje tzv. claimy – tvrzení o uživateli a tokenu, jako je ID uživatele, role nebo čas vypršení. Podpis dokazuje, že první dvě části pocházejí od držitele klíče a nikdo je nezměnil.
Base64URL je kódování, ne šifrování: payload si může přečíst kdokoli, kdo má token – přesně jako tento nástroj. Do JWT proto nikdy nevkládejte hesla ani jiná tajemství. Pokud musí obsah zůstat důvěrný, musí vydavatel použít šifrovaný token (JWE), který má pět částí a přečíst ho lze jen se správným klíčem.
Standardní claimy a vypršení platnosti
RFC 7519 definuje sedm registrovaných claimů. iss (issuer) určuje, kdo token vytvořil, sub (subject), koho se týká – obvykle ID uživatele –, a aud (audience), pro kterou službu je určen. exp (expiration time), nbf (not before) a iat (issued at) jsou časová razítka v sekundách od 1. ledna 1970 a jti je jedinečné ID, podle kterého server pozná opakované použití tokenu.
Server musí token odmítnout po čase exp a před časem nbf. Krátká platnost – u přístupových tokenů často 5 až 60 minut – omezuje škody, pokud token někdo ukradne. Proto si aplikace nové tokeny obstarávají pomocí obnovovacích tokenů (refresh tokenů).
Ověření podpisu
Dekódování ukáže, co token tvrdí; zda mu věřit, prozradí až podpis. HS256, HS384 a HS512 používají sdílený tajný klíč, který zná vydavatel i server. RS256, PS256, ES256, EdDSA a podobné algoritmy používají dvojici klíčů: vydavatel podepisuje svým soukromým klíčem a ověřit podpis může kdokoli pomocí veřejného klíče. Poskytovatelé identity zveřejňují své veřejné klíče jako sadu JWK, často na URL končící na /.well-known/jwks.json.
Ověření probíhá lokálně přes rozhraní Web Crypto vašeho prohlížeče a nic z toho, co vložíte, se nikam neodesílá. Přesto s produkčními tajnými klíči zacházejte opatrně – a pamatujte, že k ověření tokenu soukromý klíč nikdy nepotřebujete, takže vkládejte jen veřejné klíče.
Otázky a odpovědi
Je bezpečné sem vložit JWT?
Ano. Token se dekóduje a ověřuje ve vašem prohlížeči a nikdy se neposílá na nestoo ani nikomu jinému. Mějte ale na paměti, že platný přístupový token funguje jako dočasné heslo: kdokoli, kdo ho zkopíruje, ho může používat, dokud nevyprší. Platné tokeny proto nesdílejte v chatech ani v tiketech.
Dá se JWT dekódovat bez tajného klíče?
Ano. Hlavička a payload jsou jen zakódované v Base64URL, takže si je kdokoli přečte i bez klíče. Tajný nebo soukromý klíč je potřeba k vytvoření platného podpisu, tajný nebo veřejný klíč k jeho ověření.
Proč se u mého tokenu zobrazuje „Neplatný podpis“?
Většinou jde o nesprávný klíč: klíč z jiného prostředí, tajný klíč, který je potřeba nejdřív dekódovat z Base64, nebo veřejný klíč s jiným kid. Stává se to i tehdy, když se token při kopírování změnil nebo zkrátil. U tokenů od poskytovatele identity použijte jeho aktuální sadu JWK.
Jaký je rozdíl mezi JWS a JWE?
JWS je podepsaný token o třech částech: přečíst ho může kdokoli, ale nikdo ho nemůže změnit, aniž by porušil podpis. JWE je šifrovaný token o pěti částech a jeho obsah si přečte jen držitel dešifrovacího klíče. Většina tokenů, kterým se říká JWT, jsou JWS.
Co znamenají exp, iat a nbf?
Jsou to časy v sekundách od 1. ledna 1970, tzv. unixový čas. exp udává, kdy token vyprší, iat, kdy byl vydán, a nbf okamžik, před kterým se token nesmí přijmout. Tento nástroj je zobrazuje jako data ve vašem časovém pásmu a ukazuje, jak dávno to bylo nebo za jak dlouho to nastane.