Utilia

Dekodér JWT

Dekóduj hlavičku a obsah JWT, zobraz exp, iat a nbf ako dátumy a over podpisy HS256, RS256, PS256, ES256 či EdDSA lokálne v prehliadači.

Tokeny sú prístupové údaje. Tento nástroj ich dekóduje a overuje v tvojom prehliadači a nikam ich neodosiela.

Overiť podpis

HS256/384/512: zadaj zdieľané tajomstvo. RS, PS, ES (256/384/512) a EdDSA: vlož verejný kľúč ako PEM (public key, RSA public key alebo certifikát) alebo JWK (súbor JWK Set sa páruje podľa kid).

Ako dekódovať JWT

  1. Vlož token do poľa JSON Web Token. Funguje aj celá hodnota Authorization: Bearer …: predpona Bearer aj prípadné zalomenia riadkov sa odstránia.
  2. Token sa dekóduje počas písania (alebo klikni na Dekódovať). Hlavička a Obsah (payload) sa zobrazia ako formátovaný JSON, každý s vlastným tlačidlom Kopírovať.
  3. Pozri si tabuľku Časové tvrdenia: exp, nbf a iat sa zobrazia s pôvodnou hodnotou, dátumom v tvojom časovom pásme, relatívnym časom („o 3 hodiny“, „pred 2 dňami“) a stavom, napríklad Expirovaný alebo Zatiaľ neplatný.
  4. Všimni si upozornenia nad výsledkami, napríklad keď je alg rovné none alebo keď dátum vyzerá ako milisekundy.
  5. Ak chceš skontrolovať podpis, vyplň kľúč v časti Overiť podpis a klikni na Overiť podpis.

Funguje v tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.

Dekódovanie nie je overenie

JWT tvoria tri časti vo formáte Base64url oddelené bodkami: hlavička.obsah.podpis. Hlavička a obsah sú iba zakódované, nie zašifrované, takže ich môže prečítať každý, kto má token, a tento nástroj dokáže dekódovať ľubovoľný token aj bez kľúča. Z toho vyplýva, že dekódovaný obsah nič nedokazuje: niekto ho mohol upraviť. Že token vydal držiteľ kľúča a od vydania sa nezmenil, preukáže až platný podpis. Stavový riadok preto uvádza „Dekódované (podpis nie je overený)“, kým podpis neoveríš.

Token s piatimi časťami je JWE (šifrovaný JWT). Jeho obsah sa bez dešifrovacieho kľúča nedá prečítať a nástroj ti to oznámi.

Overenie podpisu

  • HS256, HS384, HS512 (HMAC): zadaj zdieľané Tajomstvo. V poli Formát tajomstva vyber, či ide o čistý text (UTF-8), alebo o Base64/Base64url, pretože niektorí poskytovatelia ukladajú tajomstvá v Base64. Môžeš vložiť aj JWK typu oct. Ak je tajomstvo kratšie ako výstup hašovacej funkcie (32 bajtov pri HS256), nástroj upozorní, že je pod minimom podľa RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 a EdDSA: vlož Verejný kľúč (PEM alebo JWK). Prijímané bloky PEM sú PUBLIC KEY, RSA PUBLIC KEY a CERTIFICATE (kľúč sa prečíta z certifikátu X.509). Funguje aj JWK alebo celý súbor JWK Set: použije sa kľúč, ktorého kid zodpovedá hlavičke. Súkromné kľúče sa odmietnu, na overenie ich nikdy nepotrebuješ. EdDSA podporuje Ed25519 v prehliadačoch, ktorých Web Crypto ho implementuje.

Overenie využíva rozhranie Web Crypto prehliadača. Výsledok „Neplatný podpis“ znamená, že kľúč je nesprávny alebo že token bol upravený. Pozor: algoritmus sa berie z hlavičky tokenu, kým skutočný server musí očakávaný algoritmus pevne nastaviť v konfigurácii, inak by ho mohol zvoliť útočník.

Bezpečnostné poznámky

  • Tokeny sú prístupové údaje. Kto drží platný prístupový token, môže zvyčajne konať v mene jeho vlastníka, kým token neexpiruje. Tento nástroj všetko dekóduje a overuje v tvojom prehliadači a token ani kľúč nikam neodosiela. Napriek tomu nevkladaj produkčné tokeny do nástrojov, ktoré nemôžeš skontrolovať.
  • alg: none znamená, že token nie je podpísaný. Ktokoľvek ho môže sfalšovať a server ho musí odmietnuť. Nástroj zobrazí upozornenie a takýto token „neoverí“.
  • Kontroly času tu používajú hodiny tvojho počítača bez akejkoľvek tolerancie; servery často pripúšťajú rozdiel hodín jednu až dve minúty.
  • Dátumy v JWT (NumericDate) sú v sekundách od 1. januára 1970 UTC. Trinásťmiestna hodnota je pravdepodobne v milisekundách, čo je častá chyba.

Často kladené otázky

Dá sa tu zistiť, či je token platný?

Zistíš, či podpis zodpovedá kľúču, ktorý zadáš, a či sú práve teraz splnené podmienky exp a nbf. To, či sa token prijme, závisí aj od kontrol, ktoré pozná len server: očakávaný vydavateľ (iss), publikum (aud), algoritmus a odvolanie platnosti.

Prečo overenie zlyhá, hoci mám správne tajomstvo?

Skontroluj Formát tajomstva: tajomstvo v Base64 zadané ako text dáva iný kľúč. Dbaj aj na to, aby sa k tajomstvu nepridala medzera ani zalomenie riadka, keďže kľúče HMAC sa porovnávajú bajt po bajte.

Aký je rozdiel medzi RS256, PS256 a ES256?

Všetky tri sú podpisy s verejným kľúčom a hašom SHA-256. RS256 používa RSA s doplnením PKCS#1 v1.5, PS256 používa RSA s doplnením PSS a ES256 používa ECDSA na krivke P-256, čo dáva podstatne kratšie podpisy.

Kde nájdem verejný kľúč poskytovateľa?

Poskytovatelia identít zverejňujú súbor JWKS (JSON Web Key Set), zvyčajne odkazovaný z /.well-known/openid-configuration pod položkou jwks_uri. Otvor ho sám a vlož sem JSON; nástroj vyberie kľúč podľa kid a nič nesťahuje.

Je bezpečné vložiť sem môj token?

Token zostáva na tvojom zariadení: dekódovanie aj overenie prebiehajú lokálne a nič sa nenahráva. Pre väčšiu opatrnosť použi expirovaný alebo testovací token, ak potrebuješ len pozrieť štruktúru.