Utilia

JWT generátor és ellenőrző

Hozz létre és ellenőrizz JSON Web Tokeneket HS256, RS256, PS256, ES256 vagy EdDSA algoritmussal. Claimek szerkesztése, exp és iat beállítása a böngésződben.

A kulcsok és a tokenek titkok. Minden aláírás és ellenőrzés helyben, a böngésződ Web Crypto API-jával történik: semmi nem kerül feltöltésre.

Aláírt JWT létrehozása

Időpontot jelölő claimek:

JWT ellenőrzése

Hogyan hozz létre aláírt JWT-t

  1. Válaszd ki az Algoritmust: HS256/384/512 (megosztott titok), RS256/384/512 vagy PS256/384/512 (RSA), ES256/384/512 (ECDSA a P-256, P-384 vagy P-521 görbén), illetve EdDSA (Ed25519, ha a böngésződ támogatja).
  2. Szerkeszd a Fejléc (JSON) és a Payload (JSON claimek) mezőt. Az alg mező mindig a kiválasztott algoritmust követi, a typ alapértéke JWT.
  3. Az időpontgombokkal vehetsz fel dátumokat: iat = most, nbf = most, vagy válassz egy késleltetést, például „1 óra múlva”, és kattints az Exp beállítása gombra. Az értékek NumericDate-ek: az 1970. január 1-jei UTC óta eltelt másodpercek.
  4. Add meg a Titkot (HS algoritmusokhoz, szövegként vagy Base64/Base64url formában a Titok formátuma mezőben) vagy a Privát kulcsot (PEM vagy JWK). Még nincs kulcsod? Kattints a Tesztkulcs generálása gombra.
  5. Kattints a Token aláírása gombra, majd másold ki az eredményt a Másolás gombbal, vagy kattints az A token ellenőrzése gombra, hogy rögtön megnézd.

Hogyan ellenőrizz egy JWT-t

  1. Illeszd be a tokent az Ellenőrizendő token mezőbe.
  2. Válaszd ki az Elvárt algoritmust. Ha az „A token fejlécéből” beállításon hagyod, az eszköz mindent elfogad, amit a fejléc megad, a none kivételével; ha konkrét algoritmust választasz, az eszköz minden másképp aláírt tokent elutasít, ahogyan egy valódi szervernek is tennie kell.
  3. Add meg a titkot vagy a Nyilvános kulcsot (PEM vagy JWK): egy PUBLIC KEY, RSA PUBLIC KEY vagy CERTIFICATE PEM-blokkot, egy JWK-t vagy egy JWK Set-et (utóbbiból azt a kulcsot használja az eszköz, amelynek a kid értéke egyezik a fejlécben szereplővel).
  4. Szükség esetén állíts be Órakülönbség-tűrést (másodperc) a kisebb óraeltérések kezelésére, majd kattints a Token ellenőrzése gombra.

Az eredmény megmondja, hogy az aláírás érvényes-e, majd az exp (lejárat) és az nbf (ekkortól érvényes) értéket összeveti a számítógéped aktuális idejével. Az a token, amelynek az aláírása helyes, de a lejárata a múltban van, lejártként jelenik meg, nem érvényesként.

Kulcsok és formátumok

Az aláíráshoz az eszköz elfogadja a PKCS#8 PRIVATE KEY blokkokat, a PKCS#1 RSA PRIVATE KEY és a SEC1 EC PRIVATE KEY blokkokat (ezeket belsőleg PKCS#8-ra alakítja), valamint a privát JWK-kat. A jelszóval védett kulcsokat előbb jelszó nélkül kell exportálni. A Tesztkulcs generálása a HS algoritmusokhoz a hash méretének megfelelő véletlen titkot, az RS és PS algoritmusokhoz 2048 bites RSA-kulcspárt, az ES-hez a megfelelő görbét, az EdDSA-hoz pedig Ed25519-párt hoz létre. A kulcsokat PEM és JWK formában is megkapod, és mindkét oldalon kitöltődnek, így az aláírás–ellenőrzés kör azonnal működik.

Az aláírások az RFC 7515 és az RFC 7518 szerint készülnek: az RSA-PSS a hash hosszával megegyező sót használ, az ECDSA-aláírások pedig a nyers r||s összefűzések. A megvalósítás reprodukálja az RFC 7515 A.1 függelékének HS256 példáját.

Biztonsági tudnivalók

  • Minden a böngésződben, a Web Crypto API-val fut. Sem a tokenek, sem a kulcsok nem kerülnek elküldésre, de azért az éles titkok helyett inkább tesztkulcsokat használj.
  • Az alg: none soha nincs aláírva, és soha nem fogadjuk el.
  • A HMAC-titkoknak legalább olyan hosszúnak kell lenniük, mint a hash (HS256-nál 32 bájt). A rövidebb titok figyelmeztetést vált ki.
  • Az aláírás az integritást és az eredetet bizonyítja, nem azt, hogy a claimek helyesek: a szervernek ellenőriznie kell az iss, az aud értéket és a jogosultsági köröket (scope) is.

Gyakori kérdések

Mi a különbség a HS256 és az RS256 között?

A HS256 egyetlen megosztott titkot használ az aláíráshoz és az ellenőrzéshez is, így minden ellenőrző tokent is hamisíthatna. Az RS256 (és a PS256, ES256, EdDSA) privát kulccsal ír alá, és olyan nyilvános kulccsal ellenőriz, amelyet nyugodtan közzé lehet tenni.

Miért jelez hibát egy érvényes aláírás is?

Mert a token az érvényességi időszakán kívül van: az exp a múltban, vagy az nbf a jövőben van. Az aláírás-ellenőrzést és az időellenőrzést külön jelezzük.

Miért utasítja el az eszköz az „alg: none” értéket?

Aláíratlan tokent bárki létrehozhat. Elfogadása a JWT-könyvtárak klasszikus sebezhetősége volt, ezért ez az eszköz az aláírásnál és az ellenőrzésnél is elutasítja.

Használhatom a saját RSA- vagy EC-kulcsomat?

Igen. Az aláíráshoz illeszd be a privát kulcsot PEM vagy JWK formában, az ellenőrzéshez a nyilvános kulcsot. Az eszköz ellenőrzi, hogy a kulcs típusa és görbéje megfelel-e a kiválasztott algoritmusnak.

Miért van letiltva az EdDSA?

A böngésződ még nem támogatja az Ed25519-et a Web Cryptóban. A Chrome, az Edge, a Firefox és a Safari újabb verziói már igen.