JWT generator i verifikator
Napravi i proveri JSON Web Tokene sa HS256, RS256, PS256, ES256 ili EdDSA. Menjaj polja, postavi exp i iat i proveri potpise lokalno u pregledaču.
Ključevi i tokeni su tajne. Sve se potpisuje i proverava lokalno pomoću Web Crypto API-ja tvog pregledača: ništa se ne otprema.
Napravi potpisan JWT
Ovaj pregledač ne podržava Ed25519 u Web Crypto, pa EdDSA nije dostupan.
Probni ključevi se generišu u tvom pregledaču i popunjavaju dole. Privatni ključ ili tajnu čuvaj za sebe; deli samo javni ključ.
Proveri JWT
Kako se pravi potpisan JWT
- Izaberi Algoritam: HS256/384/512 (zajednička tajna), RS256/384/512 ili PS256/384/512 (RSA), ES256/384/512 (ECDSA na krivama P-256, P-384 ili P-521) ili EdDSA (Ed25519, kada ga pregledač podržava).
- Izmeni Zaglavlje (JSON) i Sadržaj (JSON polja). Polje
alguvek prati izabrani algoritam, atypje podrazumevanoJWT. - Dugmadima za vremenska polja dodaj datume: iat = sada, nbf = sada, ili izaberi rok kao što je „za 1 sat“ i klikni Postavi exp. Vrednosti su NumericDate: sekunde od 1. januara 1970. UTC.
- Unesi Tajnu (HS algoritmi, kao tekst ili Base64/Base64url u polju Format tajne) ili Privatni ključ (PEM ili JWK). Nemaš ključ? Klikni Generiši probni ključ.
- Klikni Potpiši token, zatim Kopiraj rezultat ili klikni Proveri ovaj token da ga odmah proveriš.
Kako se proverava JWT
- Nalepi token pod Token za proveru.
- Izaberi Očekivani algoritam. Ako ostaviš „Iz zaglavlja tokena (nikada none)“, prihvata se šta god zaglavlje kaže, osim
none; izborom konkretnog algoritma alat odbija svaki token potpisan drugačije, kao što bi trebalo da radi pravi server. - Unesi tajnu ili Javni ključ (PEM ili JWK): PEM blok
PUBLIC KEY,RSA PUBLIC KEYiliCERTIFICATE, JWK ili JWK Set (koristi se ključ čiji sekidpoklapa sa zaglavljem). - Po želji postavi Tolerancija sata (sekunde) da bi se tolerisale male razlike u satovima, pa klikni Proveri token.
Rezultat kaže da li je potpis ispravan, a zatim proverava exp (istek) i nbf (ne važi pre) prema trenutnom vremenu tvog računara. Token sa tačnim potpisom ali istekom u prošlosti prijavljuje se kao istekao, a ne kao ispravan.
Ključevi i formati
Za potpisivanje alat prihvata PKCS#8 blokove PRIVATE KEY, PKCS#1 RSA PRIVATE KEY i SEC1 EC PRIVATE KEY (interno se pretvaraju u PKCS#8) i privatne JWK ključeve. Ključevi zaštićeni lozinkom prvo moraju da se izvezu bez lozinke. Generiši probni ključ pravi nasumičnu tajnu veličine heša za HS algoritme, RSA par od 2048 bita za RS i PS, odgovarajuću krivu za ES ili Ed25519 par. Ključeve dobijaš kao PEM i JWK, a popunjavaju se sa obe strane pa krug potpisivanja i provere radi odmah.
Potpisi prate RFC 7515 i RFC 7518: RSA-PSS koristi so jednaku dužini heša, a ECDSA potpisi su sirova nadovezana vrednost r||s. Implementacija reprodukuje HS256 primer iz RFC 7515, Dodatak A.1.
Bezbednosne napomene
- Sve radi u tvom pregledaču pomoću Web Crypto API-ja. Ni tokeni ni ključevi se nigde ne šalju, ali ipak radije koristi probne ključeve nego produkcione tajne.
alg: nonese nikada ne potpisuje i nikada ne prihvata.- HMAC tajne treba da budu bar toliko dugačke kao heš (32 bajta za HS256). Kraća tajna izaziva upozorenje.
- Potpis dokazuje celovitost i poreklo, a ne da su polja prikladna: serveri moraju da provere i
iss,audi dozvole (scope).
Česta pitanja
Koja je razlika između HS256 i RS256?
HS256 koristi jednu zajedničku tajnu i za potpisivanje i za proveru, pa bi svaki verifikator mogao da lažira tokene. RS256 (kao i PS256, ES256, EdDSA) potpisuje privatnim ključem, a proverava javnim ključem koji se bezbedno može objaviti.
Zašto se prikazuje greška iako je potpis ispravan?
Zato što je token van roka važenja: exp je u prošlosti ili je nbf u budućnosti. Provera potpisa i provera vremena prijavljuju se odvojeno.
Zašto se alg „none“ odbija?
Nepotpisan token može da napravi bilo ko. Prihvatanje takvih tokena bila je klasična ranjivost JWT biblioteka, zato ga ovaj alat odbija i pri potpisivanju i pri proveri.
Mogu li da koristim sopstveni RSA ili EC ključ?
Da. Nalepi privatni ključ kao PEM ili JWK za potpisivanje, a javni ključ za proveru. Alat proverava da li se tip ključa i kriva poklapaju sa izabranim algoritmom.
Zašto je EdDSA onemogućen?
Tvoj pregledač još ne podržava Ed25519 u Web Crypto. Novije verzije Chrome-a, Edge-a, Firefox-a i Safari-ja to podržavaju.
Srodni alati
- JWT dekoder Dekodiraj zaglavlje i sadržaj JWT-a, pročitaj exp, iat i nbf kao datume i proveri HS256, RS256, PS256, ES256 ili EdDSA potpis lokalno u pregledaču.
- HMAC generator Izračunaj HMAC-SHA1, SHA-256, SHA-384 ili SHA-512 sa ključem kao tekst, heks ili Base64, dobij heks i Base64 izlaz i proveri potpis webhooka u pregledaču.
- Unix timestamp pretvarač Pretvori Unix timestamp u sekundama ili milisekundama u čitljiv datum u lokalnom vremenu, UTC i ISO 8601, i pretvori bilo koji datum nazad u epoch vreme.
- JSON formater i validator Besplatan JSON formater i validator koji sređuje, minifikuje i proverava JSON u pregledaču, sa sintaksnim greškama prijavljenim po redu i koloni.