Narzędzie JWT (Dekoduj / Weryfikuj / Podpisz)
Dekoduj JWT, weryfikuj podpis i twórz nowe tokeny z trybem ścisłym. Token zostaje w Twojej przeglądarce — bez uploadu.
O tym narzędziu JWT
JWT (JSON Web Token) jest powszechnie używany do sesji w przeglądarce, autoryzacji API i logowania mobilnego. JWT w formacie JWS składa się z trzech segmentów Base64URL: header, payload i signature. Dekodowanie dwóch pierwszych części jest proste, ale ufanie payload bez weryfikacji to częsty błąd. Tutaj możesz wkleić token, zobaczyć JSON w header/payload, sprawdzić claimy (iss, sub, aud, exp, nbf, iat, jti) oraz odliczanie “expires in”. Możesz też ponownie zakodować edytowany JSON do Base64URL, aby porównać zmiany (podpis nie jest “naprawiany” automatycznie).
Weryfikacja działa po stronie klienta z użyciem WebCrypto API. Tryb ścisły odrzuca alg=none, wymaga allowlisty algorytmów i chroni przed pomyłkami klucz/algorytm (np. użyciem klucza RSA do weryfikacji HS256). Podaj sekret, klucz publiczny PEM, JWK lub JWKS (wklej lub pobierz z URL) i zobacz, który klucz pasuje po kid. Do tworzenia tokenów możesz podpisywać HS*, RS/PS lub ES dla deterministycznych testów — bez uploadu sekretów.
Zastosowania
Sprawdź header.alg/typ i claimy payload bez uruchamiania czegokolwiek. Idealne do szybkiego zrozumienia zawartości tokenu.
Weryfikuj podpisy HS/RS/PS/ES lokalnie. Tryb ścisły odrzuca alg=none, wymusza allowlistę i blokuje niezgodny typ klucza.
Wklej JWK lub JWKS (albo pobierz z JWKS URL) i pozwól narzędziu wybrać klucz po kid. Użyj ręcznego override przy rotacji kluczy.
Zobacz czasy i odliczanie dla exp/nbf/iat. Dodaj leeway, aby uwzględnić niewielkie różnice zegara.
Edytuj JSON header/payload i ponownie zakoduj segmenty. Podpis jest osobno, więc widać dokładnie, czemu staje się niepoprawny.
Wszystko działa w przeglądarce. Bez uploadu i bez logowania tokenów. Jeśli wybierzesz JWKS URL, żądanie jest wykonywane z Twojego urządzenia.
Intencje wyszukiwania, które pokrywamy
To popularne zapytania i scenariusze związane z dekodowaniem, weryfikacją i podpisywaniem JWT.
FAQ JWT
Czy JWT to szyfrowanie?
Nie. JWT (JWS) to zwykle token podpisany. Header i payload można zdekodować Base64URL; integralność zapewnia podpis.
Jaka jest różnica między JWS a JWE?
JWS to podpisany JWT z 3 częściami. JWE to zaszyfrowany JWT z 5 częściami; do odczytu treści potrzebujesz właściwego klucza.
Co oznacza alg=none i dlaczego to niebezpieczne?
alg=none wyłącza weryfikację podpisu. Jeśli zostanie zaakceptowany, atakujący może fałszować tokeny. Tryb ścisły odrzuca alg=none.
HS vs RS — jaka jest różnica?
HS* używa wspólnego sekretu (HMAC). RS*/PS* używa kluczy RSA (publiczny weryfikuje, prywatny podpisuje). To nie jest wymienne.
Co to jest kid i jak pomaga JWKS?
kid wskazuje, którego klucza użyto. JWKS to zestaw kluczy; weryfikator wybiera właściwy klucz po kid (lub możesz wymusić wybór ręcznie).
Dlaczego token jest “expired” lub “not active yet”?
Sprawdź exp i nbf (oraz iat). Narzędzie pokazuje odliczanie i obsługuje leeway dla niewielkiego clock skew.
Co to jest clock skew (leeway)?
Zegary serwerów i urządzeń mogą się różnić o kilka sekund. Leeway pozwala tolerować małe różnice przy walidacji exp/nbf/iat.
Czy mogę ufać payload po samym dekodowaniu?
Nie. Dekodowanie to tylko Base64URL. Zawsze weryfikuj podpis i waliduj claimy, zanim zaufasz danym.
Dlaczego podpis psuje się po re-encode?
Podpis jest liczony z header.payload. Jeśli zmienisz którąkolwiek część, podpis musi zostać przeliczony z właściwym kluczem.
Czy to narzędzie wysyła mój token?
Nie. Dekodowanie/weryfikacja/podpis odbywa się lokalnie w przeglądarce. Tylko pobranie JWKS z URL (jeśli włączone) wykonuje żądanie z Twojego urządzenia.