Generátor a overovač JWT
Vytvor a over JSON Web Tokeny s HS256, RS256, PS256, ES256 alebo EdDSA. Uprav tvrdenia, nastav exp a iat a skontroluj podpisy lokálne v prehliadači.
Kľúče a tokeny sú tajné. Všetko sa podpisuje a overuje lokálne pomocou rozhrania Web Crypto tvojho prehliadača: nič sa nenahráva.
Vytvoriť podpísaný JWT
Tento prehliadač nepodporuje Ed25519 vo Web Crypto, preto EdDSA nie je dostupné.
Testovacie kľúče sa generujú v tvojom prehliadači a vyplnia sa nižšie. Súkromný kľúč alebo tajomstvo si nechaj pre seba; zdieľaj iba verejný kľúč.
Overiť JWT
Ako vytvoriť podpísaný JWT
- Vyber Algoritmus: HS256/384/512 (zdieľané tajomstvo), RS256/384/512 alebo PS256/384/512 (RSA), ES256/384/512 (ECDSA na P-256, P-384 alebo P-521), prípadne EdDSA (Ed25519, ak ho tvoj prehliadač podporuje).
- Uprav Hlavičku (JSON) a Obsah (JSON tvrdenia). Pole
algvždy zodpovedá vybranému algoritmu atypje predvoleneJWT. - Dátumy pridáš tlačidlami časových tvrdení: iat = teraz, nbf = teraz, alebo vyber platnosť, napríklad „o 1 hodinu“, a klikni na Nastaviť exp. Hodnoty sú NumericDate: sekundy od 1. januára 1970 UTC.
- Zadaj Tajomstvo (algoritmy HS, ako text alebo Base64/Base64url v poli Formát tajomstva) alebo Súkromný kľúč (PEM alebo JWK). Ešte nemáš kľúč? Klikni na Generovať testovací kľúč.
- Klikni na Podpísať token, potom výsledok Kopírovať, alebo klikni na Overiť tento token a hneď ho skontroluj.
Funguje v tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.
Ako overiť JWT
- Vlož token do poľa Token na overenie.
- Vyber Očakávaný algoritmus. Ak necháš „Z hlavičky tokenu (nikdy none)“, prijme sa všetko, čo hlavička uvádza, okrem
none; ak zvolíš konkrétny algoritmus, nástroj odmietne každý token podpísaný inak, rovnako ako to má robiť skutočný server. - Zadaj tajomstvo alebo Verejný kľúč (PEM alebo JWK): blok PEM
PUBLIC KEY,RSA PUBLIC KEYaleboCERTIFICATE, JWK alebo súbor JWK Set (použije sa kľúč, ktoréhokidzodpovedá hlavičke). - Voliteľne nastav Toleranciu hodín (sekundy), aby sa tolerovali malé rozdiely v hodinách, a klikni na Overiť token.
Výsledok povie, či je podpis platný, a potom porovná exp (expirácia) a nbf (platné od) s aktuálnym časom tvojho počítača. Token so správnym podpisom, ale s expirovanou platnosťou sa ohlási ako expirovaný, nie ako platný.
Kľúče a formáty
Na podpisovanie nástroj prijíma bloky PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY a SEC1 EC PRIVATE KEY (interne sa prevedú na PKCS#8) a súkromné JWK. Kľúče chránené heslom treba najprv exportovať bez hesla. Generovať testovací kľúč vytvorí pre algoritmy HS náhodné tajomstvo s dĺžkou hašu, pre RS a PS pár kľúčov RSA s 2048 bitmi, pre ES zodpovedajúcu krivku a pre EdDSA pár Ed25519. Kľúče dostaneš vo formáte PEM aj JWK a vyplnia sa na oboch stranách, takže celý cyklus podpísania a overenia funguje hneď.
Podpisy zodpovedajú RFC 7515 a RFC 7518: RSA-PSS používa soľ rovnako dlhú ako haš a podpisy ECDSA sú surové zreťazenie r||s. Implementácia reprodukuje príklad HS256 z RFC 7515, príloha A.1.
Bezpečnostné poznámky
- Všetko beží v tvojom prehliadači cez rozhranie Web Crypto. Tokeny ani kľúče sa nikam neodosielajú, no aj tak radšej používaj testovacie kľúče než produkčné tajomstvá.
alg: nonesa nikdy nepodpíše a nikdy neprijme.- Tajomstvá HMAC by mali byť aspoň také dlhé ako haš (32 bajtov pri HS256). Kratšie tajomstvo vyvolá upozornenie.
- Podpis dokazuje integritu a pôvod, nie to, že tvrdenia sú vhodné: servery musia kontrolovať aj
iss,auda rozsahy oprávnení.
Často kladené otázky
Aký je rozdiel medzi HS256 a RS256?
HS256 používa jedno zdieľané tajomstvo na podpisovanie aj overovanie, takže každý overovateľ by mohol tokeny aj falšovať. RS256 (a PS256, ES256, EdDSA) podpisuje súkromným kľúčom a overuje verejným kľúčom, ktorý sa dá bezpečne zverejniť.
Prečo sa pri platnom podpise zobrazí chyba?
Pretože token je mimo času platnosti: exp je v minulosti alebo nbf v budúcnosti. Kontrola podpisu a kontrola času sa hlásia samostatne.
Prečo sa alg „none“ odmieta?
Nepodpísaný token môže vytvoriť ktokoľvek. Jeho prijímanie bolo klasickou zraniteľnosťou knižníc JWT, preto ho tento nástroj odmieta pri podpisovaní aj pri overovaní.
Môžem použiť vlastný kľúč RSA alebo EC?
Áno. Na podpis vlož súkromný kľúč ako PEM alebo JWK, na overenie verejný kľúč. Nástroj skontroluje, či typ kľúča a krivka zodpovedajú vybranému algoritmu.
Prečo je EdDSA vypnuté?
Tvoj prehliadač zatiaľ nepodporuje Ed25519 vo Web Crypto. Nedávne verzie Chrome, Edge, Firefox a Safari ho podporujú.
Súvisiace nástroje
- 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.
- Generátor HMAC (SHA-256, SHA-512) Vypočítaj HMAC-SHA1, SHA-256, SHA-384 alebo SHA-512 s kľúčom v texte, hex alebo Base64, získaj výstup v hex a Base64 a over podpis webhooku v prehliadači.
- Prevodník Unix timestamp Prevádzaj Unix timestamp v sekundách alebo milisekundách na čitateľný dátum v miestnom čase, UTC a ISO 8601 a ľubovoľný dátum zmeň späť na epoch čas.
- Formátovanie a validácia JSON Bezplatný formátovač a validátor JSON, ktorý skrášľuje, minifikuje a kontroluje JSON v prehliadači a hlási syntaktické chyby s riadkom a stĺpcom.