tigtools

JWT generátor

Vytvořte a podepište JSON Web Token pro testování nebo zkontrolujte, zda HMAC podpis tokenu odpovídá tajemství. Podepisování využívá Web Crypto API vašeho prohlížeče.

Běží ve vašem prohlížeči Bez registrace

Režim
Tajný klíč zůstává na této záložce prohlížeče a nikam se neodesílá. Přesto nevkládejte produkční podpisové klíče do žádné webové stránky: kdokoli, kdo zná tajný klíč, může pro váš systém vytvářet platné tokeny. Zde používejte testovací tajné klíče.

alg se nastaví z nabídky algoritmu; typ je standardně JWT.

Claimy jako sub, iat a exp. Časy jsou v sekundách od roku 1970 (UTC).

Zadejte tajný klíč pro podpis tokenu.

Jak používat

  1. Vyberte HS256, HS384 nebo HS512.
  2. Upravte položky payloadu a klikněte na „Nastavit iat a exp“, čímž přidáte aktuální čas a datum vypršení platnosti.
  3. Zadejte testovací tajemství nebo vygenerujte náhodné 256bitové.
  4. Zkopírujte podepsaný token. Chcete-li token zkontrolovat, přepněte na „Ověřit podpis“, vložte jej a zadejte tajemství.

Jak to funguje

JSON Web Token (RFC 7519) má tři části kódované Base64URL: hlavičku, payload s claimy a podpis. U algoritmů HMAC HS256, HS384 a HS512 je podpis HMAC s SHA-256, SHA-384 nebo SHA-512 vypočítaný z řetězce „header.payload“ a klíčovaný sdíleným tajemstvím. Kdokoli se znalostí tajemství může tokeny vytvářet a ověřovat.

Nástroj serializuje hlavičku a payload jako kompaktní JSON, zakóduje je a podepíše pomocí crypto.subtle, tedy Web Crypto API zabudovaného ve vašem prohlížeči. Pole alg v hlavičce vždy odpovídá zvolenému algoritmu, typ je standardně JWT a další pole hlavičky, jako je kid, zůstávají zachována. „Nastavit iat a exp“ zapíše aktuální čas jako iat (vydáno) a přidá zvolenou dobu platnosti jako exp, obojí v sekundách od 1. ledna 1970 UTC. Výsledek se shoduje s jinými knihovnami pro JWT; kupříkladu klasický ukázkový token z jwt.io je reprodukován přesně.

Tajemství může být prostý text (klíčem jsou jeho bajty v UTF-8) nebo bajty kódované Base64/Base64URL, což používá mnoho frameworků. Tlačítko náhodného tajemství vygeneruje 32 náhodných bajtů pomocí crypto.getRandomValues. Pro HS256 používejte alespoň 32 náhodných bajtů; krátká tajemství zvolená lidmi lze z jakéhokoli tokenu uhodnout offline.

Ověření token dekóduje, zkontroluje, že používá algoritmus HMAC, a znovu vypočítá podpis pomocí crypto.subtle.verify. Také ukazuje, když exp nebo nbf znamenají, že platnost tokenu vypršela nebo ještě nezačala. RS256, ES256 a další algoritmy s veřejným klíčem nejsou podporovány a zdejší ověření nekontroluje vydavatele, publikum ani další claimy, které vaše aplikace může vyžadovat.

Příklady

Testování API lokálně

Váš vývojový server očekává tokeny HS256 podepsané tajemstvím „dev-secret-change-me“. Nastavte sub na ID testovacího uživatele, klikněte na „Nastavit iat a exp“ s dobou 1 hodiny, zadejte tajemství a odešlete token v hlavičce Authorization: Bearer.

Zjištění, které tajemství token podepsalo

Testovací token je zamítnut. Vložte jej do pole „Ověřit podpis“ a zkuste testovací tajemství: hláška „Podpis není platný“ znamená, že token byl podepsán jiným tajemstvím nebo je tajemství v jiném formátu (text vs Base64).

Reprodukce ukázky z jwt.io

S hlavičkou {"alg":"HS256","typ":"JWT"}, payloadem {"sub":"1234567890","name":"John Doe","iat":1516239022} a tajemstvím „your-256-bit-secret“ token končí na SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, stejně jako na jwt.io.

Časté dotazy

Odesílá se mé tajemství na váš server?

Ne. Podepisování a ověřování probíhá pomocí Web Crypto API přímo ve vašem prohlížeči a tajemství se nikam neukládá ani neodesílá. Přesto doporučujeme používat pouze testovací tajemství, protože skutečné podpisové tajemství byste nikdy neměli zadávat na webovou stránku.

Proč je podpis neplatný, i když je tajemství správné?

Zkontrolujte formát tajemství. Některé systémy používají text tajemství, jiné jej nejprve dekódují z Base64, což dává jiné bajty klíče. Také zkontrolujte, že token nebyl změněn a že používá stejný algoritmus.

Mohu vytvořit tokeny RS256 nebo ES256?

Tímto nástrojem ne. Podporuje pouze algoritmy HMAC se sdíleným tajemstvím HS256, HS384 a HS512.

Je payload šifrovaný?

Ne. Podepsaný JWT je pouze zakódovaný; kdokoli jej může dekódovat a přečíst payload. Podpis pouze dokazuje, že nebyl změněn. Do payloadu nedávejte hesla ani jiná tajemství.

Soukromí

Tokeny se vytvářejí a ověřují pouze ve vašem prohlížeči pomocí Web Crypto API. Hlavička, payload, token a tajemství se nenahrávají, neukládají ani nezahrnují do analytiky.