Jak používat
- Vyberte HS256, HS384 nebo HS512.
- Upravte položky payloadu a klikněte na „Nastavit iat a exp“, čímž přidáte aktuální čas a datum vypršení platnosti.
- Zadejte testovací tajemství nebo vygenerujte náhodné 256bitové.
- 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.