JWT generator i verifikator
Napravi i provjeri JSON Web Token s HS256, RS256, PS256, ES256 ili EdDSA. Uredi podatke, postavi exp i iat te lokalno provjeri potpis u pregledniku.
Ključevi i tokeni su tajni podaci. Sve se potpisuje i provjerava lokalno pomoću Web Crypto API-ja tvog preglednika: ništa se ne šalje na server.
Napravi potpisani JWT
Ovaj preglednik ne podržava Ed25519 u Web Crypto, pa EdDSA nije dostupan.
Testni ključevi se generišu u tvom pregledniku i upisuju ispod. Privatni ključ ili tajni ključ čuvaj za sebe; dijeli samo javni ključ.
Provjeri JWT
Kako napraviti potpisani JWT
- Odaberi Algoritam: HS256/384/512 (zajednički tajni ključ), RS256/384/512 ili PS256/384/512 (RSA), ES256/384/512 (ECDSA na krivuljama P-256, P-384 ili P-521) ili EdDSA (Ed25519, ako ga tvoj preglednik podržava).
- Uredi Zaglavlje (JSON) i Payload (JSON podaci). Polje
alguvijek slijedi odabrani algoritam, atypje podrazumijevanoJWT. - Dugmad za vremenske podatke dodaju datume: iat = sada, nbf = sada, ili odaberi rok, na primjer „za 1 sat“, i klikni na Postavi exp. Vrijednosti su NumericDate: sekunde od 1. januara 1970. u UTC-u.
- Unesi Tajni ključ (HS algoritmi, kao tekst ili Base64/Base64url u polju Format tajnog ključa) ili Privatni ključ (PEM ili JWK). Nemaš ključ? Klikni na Generiši testni ključ.
- Klikni na Potpiši token, zatim Kopiraj rezultat ili klikni na Provjeri ovaj token da ga odmah provjeriš.
Kako provjeriti JWT
- Zalijepi token u polje Token za provjeru.
- Odaberi Očekivani algoritam. Ako ostane „Iz zaglavlja tokena (nikada none)“, prihvata se algoritam iz zaglavlja, osim
none. Ako odabereš određeni algoritam, alat odbija svaki token potpisan drugačije, kao što bi trebao i pravi server. - Unesi tajni ključ ili Javni ključ (PEM ili JWK): PEM blok
PUBLIC KEY,RSA PUBLIC KEYiliCERTIFICATE, JWK ili JWK Set (koristi se ključ čijikidodgovara zaglavlju). - Po želji postavi Toleranciju sata (sekunde) da bi se tolerisale male razlike u satovima, pa klikni na Provjeri token.
Rezultat kaže je li potpis ispravan, a zatim provjerava exp (istek) i nbf (ne vrijedi prije) prema trenutnom vremenu tvog računara. Token s tačnim potpisom, ali s 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) te privatne JWK-ove. Ključevi zaštićeni lozinkom moraju se prvo izvesti bez lozinke. Generiši testni ključ pravi nasumičan tajni ključ veličine hash funkcije za HS algoritme, RSA par od 2048 bita za RS i PS, odgovarajuću krivulju za ES ili Ed25519 par. Ključeve dobiješ kao PEM i JWK, a upisuju se na obje strane, pa kružni tok (potpisivanje, pa provjera) radi odmah.
Potpisi prate RFC 7515 i RFC 7518: RSA-PSS koristi salt jednak dužini hasha, a ECDSA potpisi su sirova konkatenacija r||s. Implementacija reproducira HS256 primjer iz RFC-a 7515, dodatak A.1.
Sigurnosne napomene
- Sve radi u tvom pregledniku pomoću Web Crypto API-ja. Ni tokeni ni ključevi ne šalju se nigdje, ali ipak radije koristi testne ključeve nego produkcijske tajne.
alg: nonese nikada ne potpisuje i nikada ne prihvata.- HMAC tajni ključevi trebaju biti barem dugi koliko i hash (32 bajta za HS256). Kraći ključ izaziva upozorenje.
- Potpis dokazuje integritet i porijeklo, ali ne i da su podaci u tokenu primjereni: serveri moraju provjeriti i
iss,audi opsege (scope).
Česta pitanja
Koja je razlika između HS256 i RS256?
HS256 koristi jedan zajednički tajni ključ i za potpisivanje i za provjeru, pa bi svaki ko provjerava mogao i falsifikovati tokene. RS256 (te PS256, ES256, EdDSA) potpisuje privatnim ključem, a provjerava javnim ključem koji se može sigurno objaviti.
Zašto se greška prikazuje iako je potpis ispravan?
Zato što je token izvan roka važenja: exp je u prošlosti ili je nbf u budućnosti. Provjera potpisa i provjera vremena prijavljuju se odvojeno.
Zašto se alg „none“ odbija?
Nepotpisani token može napraviti bilo ko. Prihvatanje takvih tokena bila je klasična ranjivost JWT biblioteka, pa ih ovaj alat odbija i pri potpisivanju i pri provjeri.
Mogu li koristiti vlastiti RSA ili EC ključ?
Možeš. Zalijepi privatni ključ kao PEM ili JWK za potpisivanje, a javni ključ za provjeru. Alat provjerava da tip ključa i krivulja odgovaraju odabranom algoritmu.
Zašto je EdDSA onemogućen?
Tvoj preglednik još ne podržava Ed25519 u Web Crypto. Novije verzije preglednika Chrome, Edge, Firefox i Safari ga podržavaju.
Srodni alati
- JWT dekoder Dekodiraj zaglavlje i payload JWT tokena, pročitaj exp, iat i nbf kao datume te lokalno provjeri HS256, RS256, PS256, ES256 ili EdDSA potpis.
- HMAC generator Izračunaj HMAC-SHA1, SHA-256, SHA-384 ili SHA-512 s tekstualnim, heks ili Base64 ključem, dobij heks i Base64 izlaz i provjeri potpis webhooka u pregledniku.
- Unix timestamp pretvarač Pretvori Unix timestamp u sekundama ili milisekundama u čitljiv datum u lokalnom vremenu, UTC-u i ISO 8601 formatu, a svaki datum nazad u epoch vrijeme.
- JSON formater i validator Besplatan JSON formater i validator koji uljepšava, minifikuje i provjerava JSON u pregledniku, a sintaksne greške prijavljuje s redom i kolonom.