Jak nástroj použít
- 1.Vložte token do pole, s předponou „Bearer“ i bez ní. Hlavička a payload se dekódují průběžně při psaní.
- 2.Podívejte se na řádek se stavem: podle claimů
expanbfukazuje, zda je token platný, zda už vypršel, nebo zda ještě neplatí. - 3.Projdě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.
- 4.Pro 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.