tigtools

JWT Generátor

Hozzon létre és írjon alá egy JSON Web Tokent teszteléshez, vagy ellenőrizze, hogy egy token HMAC-aláírása egyezik-e a titkos kulccsal. Az aláírás a böngésző Web Crypto API-ját használja.

Böngészőben fut Regisztráció nélkül

Mód
A titkos kulcs ezen a böngészőfülön marad, és soha nem küldjük el sehová. Ennek ellenére ne illesszen be éles aláíró titkos kulcsokat egyetlen webhelyre sem: aki ismeri a titkos kulcsot, érvényes tokeneket hozhat létre a rendszeréhez. Itt teszt titkos kulcsokat használjon.

Az alg az algoritmus menüből kerül beállításra; a typ alapértelmezett értéke JWT.

Mezők, például sub, iat és exp. Az időértékek az 1970 (UTC) óta eltelt másodpercek.

Adja meg a titkot a token aláírásához.

Használata

  1. Válassza ki a HS256, HS384 vagy HS512 algoritmust.
  2. Szerkessze a payload állításait, és kattintson az „iat és exp beállítása” gombra az aktuális idő és egy lejárati idő hozzáadásához.
  3. Adjon meg egy teszt titkos kulcsot, vagy generáljon egy véletlenszerű 256 bites kulcsot.
  4. Másolja ki az aláírt tokent. Token ellenőrzéséhez váltson az „Aláírás ellenőrzése” fülre, illessze be, és adja meg a titkos kulcsot.

Hogyan működik

A JSON Web Token (RFC 7519) három Base64URL-kódolású részből áll: fejlécből, a claim-eket tartalmazó adatrészből (payload) és aláírásból. A HS256, HS384 és HS512 HMAC-algoritmusoknál az aláírás a „header.payload” szövegen készült HMAC SHA-256, SHA-384 vagy SHA-512 használatával, közös titkos kulccsal. Aki ismeri a titkos kulcsot, az tud tokeneket létrehozni és ellenőrizni.

Az eszköz a fejlécet és a payloadot tömör JSON-ként szerializálja, kódolja, és a böngészőbe épített Web Crypto API (crypto.subtle) segítségével aláírja. A fejlécben az alg mező mindig megegyezik a választott algoritmussal, a typ alapértelmezés szerint JWT, és minden további fejlécmező (például kid) megmarad. Az „iat és exp beállítása” az aktuális időt iat (issued at, kiállítás ideje) mezőként írja be, az exp mezőhöz pedig hozzáadja a választott élettartamot; mindkettő az 1970. január 1. 00:00 UTC óta eltelt másodpercekben értendő. Az eredmény megegyezik más JWT-könyvtárak kimenetével; például a klasszikus jwt.io mintatoken pontosan reprodukálható.

A titok lehet egyszerű szöveg (a kulcs annak UTF-8 bájtjai), vagy Base64/Base64URL-kódolású bájt, amit sok keretrendszer használ. A véletlen titok gomb a crypto.getRandomValues segítségével 32 véletlen bájtot hoz létre. HS256 esetén érdemes legalább 32 véletlen bájtot használni; a rövid, ember által választott titkok bármely tokenből offline kitalálhatók.

Az ellenőrzés dekódolja a tokent, megvizsgálja, hogy HMAC-algoritmust használ-e, majd a crypto.subtle.verify segítségével újraszámítja az aláírást. Azt is jelzi, ha az exp vagy az nbf alapján a token lejárt vagy még nem érvényes. Az RS256, ES256 és más nyilvános kulcsú algoritmusok nem támogatottak, és az itt végzett ellenőrzés nem vizsgálja a kibocsátót, a közönséget (audience) vagy más olyan claim-eket, amelyekre az alkalmazásának szüksége lehet.

Példák

API tesztelése helyben

A fejlesztői szervere HS256-tokeneket vár, amelyeket a „dev-secret-change-me” titokkal írtak alá. Állítsa be a sub mezőt egy tesztfelhasználói azonosítóra, kattintson az „iat és exp beállítása” gombra 1 órával, adja meg a titkot, majd küldje el a tokent egy Authorization: Bearer fejlécben.

Annak ellenőrzése, melyik titkos kulcs írta alá a tokent

Ha egy staging tokent elutasítanak, illessze be az „Aláírás ellenőrzése” mezőbe, és próbálja ki a staging titkos kulcsot: az „Érvénytelen aláírás” üzenet azt jelzi, hogy a tokent más titkos kulccsal írták alá, vagy a titkos kulcs más formátumú (szöveg vagy Base64).

A jwt.io minta előállítása

A(z) {"alg":"HS256","typ":"JWT"} fejléccel, a(z) {"sub":"1234567890","name":"John Doe","iat":1516239022} payloaddal és a „your-256-bit-secret” titkos kulccsal a token SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c végződésű, ugyanaz, mint a jwt.io mintájában.

Gyakori kérdések

Elküldi a titkos kulcsomat a szerverére?

Nem. Az aláírás és az ellenőrzés a böngészőben, a Web Crypto API-val fut, a titkos kulcsot nem tároljuk és nem küldjük el sehova. Ennek ellenére csak teszt titkos kulcsokat javaslunk, mert éles aláíró kulcsot soha ne írjon be egy weboldalra.

Miért érvénytelen az aláírás annak ellenére, hogy a titkos kulcs helyes?

Ellenőrizze a titkos kulcs formátumát. Egyes rendszerek a kulcs szövegét használják, mások először Base64-ból dekódolják, ami eltérő kulcsbájtokat eredményez. Ellenőrizze azt is, hogy a token nem változott-e, és hogy ugyanazt az algoritmust használja-e.

Létrehozhatok RS256 vagy ES256 tokeneket?

Ezzel az eszközzel nem. Csak a közös titkos kulcsú HMAC algoritmusokat támogatja: HS256, HS384 és HS512.

A payload titkosítva van?

Nem. Az aláírt JWT csak kódolt; bárki dekódolhatja és elolvashatja a payloadot. Az aláírás csak azt igazolja, hogy nem módosították. Ne tegyen jelszavakat vagy más titkos adatokat a payloadba.

Adatvédelem

A tokenek kizárólag az Ön böngészőjében, a Web Crypto API segítségével jönnek létre és kerülnek ellenőrzésre. A fejléc, a payload, a token és a titkos kulcs nem kerül feltöltésre, tárolásra, és nem szerepel az analitikában.