Utilia

JWT dekodér

Dekóduj hlavičku a obsah JWT, zobraz exp, iat a nbf jako data a ověř podpis HS256, RS256, PS256, ES256 či EdDSA přímo ve svém prohlížeči.

Tokeny jsou přihlašovací údaje. Tento nástroj je dekóduje a ověřuje ve tvém prohlížeči a nikam je neposílá.

Ověřit podpis

HS256/384/512: zadej sdílené tajemství. RS, PS, ES (256/384/512) a EdDSA: vlož veřejný klíč jako PEM (public key, RSA public key nebo certifikát) nebo JWK (sada JWK se vybírá podle kid).

Jak dekódovat JWT

  1. Vlož token do pole JSON Web Token. Funguje i celá hodnota Authorization: Bearer …: předpona Bearer i případné zalomení řádků se odstraní.
  2. Token se dekóduje už během psaní (nebo klikni na Dekódovat). Hlavička a Obsah (payload) se zobrazí jako formátovaný JSON, každý s vlastním tlačítkem Kopírovat.
  3. Prohlédni si tabulku Časové údaje: exp, nbf a iat se zobrazí se surovou hodnotou, datem v tvém časovém pásmu, relativním časem („za 3 hodiny“, „před 2 dny“) a stavem, například Vypršelo nebo Zatím neplatné.
  4. Zkontroluj varování nad výsledky, například když je alg rovno none nebo když časový údaj vypadá jako milisekundy.
  5. Chceš-li ověřit podpis, vyplň klíč v části Ověřit podpis a klikni na Ověřit podpis.

Dekódování není ověření

JWT tvoří tři části zakódované v Base64url a oddělené tečkami: hlavička.obsah.podpis. Hlavička a obsah jsou pouze zakódované, nikoli šifrované, takže si je přečte každý, kdo token drží, a tento nástroj dokáže dekódovat jakýkoli token bez klíče. Znamená to také, že dekódovaný obsah nic nedokazuje: někdo ho mohl upravit. Teprve platný podpis ukazuje, že token vydal držitel klíče a že se od té doby nezměnil. Stavový řádek proto uvádí „Dekódováno (podpis není ověřen)“, dokud podpis neověříš.

Token s pěti částmi je JWE (šifrované JWT). Jeho obsah nelze bez dešifrovacího klíče přečíst a nástroj ti to oznámí.

Ověření podpisu

  • HS256, HS384, HS512 (HMAC): zadej sdílené Tajemství. V poli Formát tajemství vyber, zda jde o prostý text (UTF-8), nebo o Base64/Base64url, protože někteří poskytovatelé ukládají tajemství v Base64. Můžeš také vložit JWK typu oct. Pokud je tajemství kratší než výstup hashe (32 bajtů u HS256), nástroj upozorní, že je pod minimem podle RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 a EdDSA: vlož Veřejný klíč (PEM nebo JWK). Přijímané bloky PEM jsou PUBLIC KEY, RSA PUBLIC KEY a CERTIFICATE (klíč se načte z certifikátu X.509). Funguje také JWK nebo celá sada JWK Set: použije se klíč, jehož kid odpovídá hlavičce. Soukromé klíče se odmítají; ověření je nikdy nepotřebuje. EdDSA podporuje Ed25519 v prohlížečích, jejichž Web Crypto ho implementuje.

Ověření využívá rozhraní Web Crypto API tvého prohlížeče. Výsledek „Neplatný podpis“ znamená, že klíč je špatný nebo že byl token změněn. Pamatuj, že algoritmus se zde bere z hlavičky tokenu: skutečný server musí očekávaný algoritmus pevně nastavit v konfiguraci, jinak by ho mohl zvolit útočník.

Bezpečnostní poznámky

  • Tokeny jsou přihlašovací údaje. Kdo drží platný přístupový token, může obvykle jednat jeho jménem, dokud nevyprší. Tento nástroj vše dekóduje a ověřuje ve tvém prohlížeči a token ani klíč nikam neposílá. I tak se vyhni vkládání produkčních tokenů do nástrojů, které si nemůžeš prověřit.
  • alg: none znamená nepodepsaný token. Takový token může padělat kdokoli a server ho musí odmítnout. Nástroj zobrazí varování a takový token odmítne „ověřit“.
  • Kontrola času zde používá hodiny tvého počítače bez jakékoli tolerance; servery často připouštějí rozdíl hodin v řádu jedné či dvou minut.
  • Data v JWT (NumericDate) jsou sekundy od 1. ledna 1970 UTC. Třináctimístná hodnota je pravděpodobně v milisekundách, což je častá chyba.

Časté dotazy

Poví mi tento nástroj, zda je token platný?

Řekne ti, zda podpis odpovídá klíči, který zadáš, a zda jsou právě teď splněny podmínky exp a nbf. O tom, zda bude token přijat, rozhodují i kontroly, které zná jen server: očekávaný vydavatel (iss), publikum (aud), algoritmus a odvolání tokenu.

Proč ověření selže, i když mám správné tajemství?

Zkontroluj Formát tajemství: tajemství v Base64 zadané jako text dá jiný klíč. Ujisti se také, že se k tajemství nepřidala mezera ani zalomení řádku, protože klíče HMAC se porovnávají bajt po bajtu.

V čem se liší RS256, PS256 a ES256?

Všechny tři jsou podpisy s veřejným klíčem a hashem SHA-256. RS256 používá RSA s doplněním PKCS#1 v1.5, PS256 používá RSA s doplněním PSS a ES256 používá ECDSA na křivce P-256, která dává mnohem kratší podpisy.

Kde najdu veřejný klíč poskytovatele?

Poskytovatelé identit zveřejňují JWKS (JSON Web Key Set), obvykle odkazovaný z /.well-known/openid-configuration pod položkou jwks_uri. Otevři ho sám a vlož sem jeho JSON; nástroj vybere klíč podle kid a nic nestahuje.

Je bezpečné vložit sem svůj token?

Token zůstává v tvém zařízení: dekódování i ověření probíhají lokálně a nic se nenahrává. Pokud chceš být opatrnější a potřebuješ jen prohlédnout strukturu, použij token s prošlou platností nebo testovací token.