RevealTheme logo

Dekoder JWT

Dekoduj tokeny JSON Web Token (JWT) natychmiast. Działa w Twojej przeglądarce: tokeny nigdy nie opuszczają Twojego urządzenia, więc można bezpiecznie używać go z sekretami produkcyjnymi.

Jak korzystać z tego narzędzia

  1. 1

    Wklej swój JWT w pole wprowadzania.

  2. 2

    Kliknij Dekoduj. Nagłówek i ładunek zostaną przeanalizowane i wyświetlone.

  3. 3

    Sprawdź algorytm, oświadczenia (claims), datę wygaśnięcia i wydawcę.

Czym jest JWT i jak działa?

JSON Web Token (JWT, zdefiniowany w RFC 7519) to kompaktowy i bezpieczny dla adresów URL sposób reprezentowania zestawu oświadczeń (claims) dotyczących użytkownika, z kryptograficznym dowodem, że te oświadczenia nie zostały zmanipulowane. Tokeny JWT napędzają uwierzytelnianie w większości nowoczesnych stosów internetowych: gdy się logujesz, serwer tworzy JWT zawierający Twój identyfikator użytkownika i uprawnienia, podpisuje go kluczem tajnym i odsyła Ci go z powrotem. Twoja przeglądarka przechowuje token (zwykle w localStorage lub w pliku cookie) i dołącza go w nagłówku Authorization każdego kolejnego żądania. Serwer weryfikuje podpis przy każdym żądaniu: jeśli jest prawidłowy, oświadczenia tokena są godne zaufania; jeśli token został zmanipulowany, podpis się nie zgadza i żądanie zostaje odrzucone. Tokeny JWT mają trzy części zakodowane w Base64URL i rozdzielone kropkami: nagłówek deklaruje algorytm podpisu (HS256 dla HMAC-SHA256, RS256 dla RSA, ES256 dla ECDSA, none dla tokenów niepodpisanych, co jest niebezpieczne i powinieneś je odrzucać); ładunek (payload) zawiera właściwe oświadczenia (standardowe oświadczenia, takie jak „sub” dla podmiotu, „exp” dla terminu ważności, „iat” dla daty wydania, a także dowolne niestandardowe oświadczenia definiowane przez Twoją aplikację); podpis jest dowodem, że nagłówek i ładunek zostały podpisane przez kogoś, kto posiadał sekret. Ten dekoder ujawnia dwie pierwsze części, które są informacją publiczną; podpis można zweryfikować wyłącznie za pomocą klucza, dlatego każdy dekoder JWT pokazuje oświadczenia bez weryfikacji.

Typowe przypadki użycia

  • Debuguj problemy z uwierzytelnianiem, dekodując JWT wysyłany przez Twojego klienta – zobacz dokładnie, które oświadczenia są obecne, kto je wydał i kiedy wygasają.

  • Sprawdź JWT z bramy API (AWS Cognito, Auth0, Okta), aby zrozumieć strukturę oświadczeń dla usług downstream.

  • Zweryfikuj, czy niestandardowe oświadczenia (identyfikator organizacji, rola, flagi funkcji) są poprawnie ustawiane w kodzie wydającym token.

  • Porównaj tokeny przed i po odświeżeniu, aby potwierdzić, że data wygaśnięcia została przedłużona.

  • Skontroluj algorytm tokenu – potwierdź, że w środowisku produkcyjnym używany jest RS256 lub ES256, nigdy 'none'.

  • Przetłumacz ładunki base64url z logów serwera na czytelne oświadczenia.

Najczęściej zadawane pytania

Czy można bezpiecznie używać go z produkcyjnymi tokenami JWT?
Tak. Dekodowanie odbywa się w całości w Twojej przeglądarce za pomocą lokalnego JavaScriptu: token nigdy nie trafia na nasze serwery ani nie pojawia się w żadnym logu. Możesz to sprawdzić, otwierając DevTools → karta Sieć podczas dekodowania: nie zostaje wysłane żadne żądanie wychodzące. Mimo to traktuj tokeny JWT jak dane uwierzytelniające: nie wklejaj ich do adresów URL, zrzutów ekranu ani udostępnianych dokumentów, niezależnie od tego, gdzie działa dekoder.
Czy weryfikuje to podpis?
Nie. Weryfikacja podpisu wymaga sekretu (dla HS256) lub klucza publicznego (dla RS256/ES256/PS256). Narzędzia internetowe, które proszą o Twój sekret w celu zweryfikowania JWT, to sygnał alarmowy w kwestii bezpieczeństwa: wysyłałbyś swój klucz podpisujący nieznajomemu. Weryfikuj podpisy na serwerze lub za pomocą biblioteki, którą kontrolujesz (jose, jsonwebtoken).
Co się dzieje, jeśli mój JWT wygasł?
Wygaśnięcie nie uniemożliwia dekodowania: oświadczenie „exp” to po prostu dana wewnątrz ładunku. Poszukaj „exp” w zdekodowanym ładunku: to znacznik czasu Unix (sekundy od 1970 roku). Przekonwertuj go za pomocą naszego konwertera znaczników czasu, aby zobaczyć termin ważności w Twojej strefie czasowej. Jeśli „exp” już minął, token jest odrzucany przez każdy zgodny weryfikator, nawet jeśli dekoder nadal go odczytuje.
Czy tokeny JWT można szyfrować?
Tak: nazywa się to JWE (JSON Web Encryption, RFC 7516). To narzędzie obsługuje JWS (JSON Web Signature, najczęstszy przypadek), gdzie ładunek jest podpisany, ale widoczny. Tokeny JWE mają 5 części rozdzielonych kropkami zamiast 3 i wymagają klucza prywatnego odbiorcy do odszyfrowania. Jeśli Twój token ma 5 części, potrzebujesz narzędzia obsługującego JWE.
Co oznacza „alg”: „none” i czy jest to niebezpieczne?
„none” oznacza brak podpisu: token jest niepodpisany i każdy może sfałszować dowolne oświadczenie. Systemy produkcyjne muszą jawnie odrzucać tokeny z „alg: none”. Niektóre biblioteki akceptują je domyślnie (dobrze znana klasa CVE). Zawsze zezwalaj wyłącznie na algorytmy, których oczekuje Twoja aplikacja.
Dlaczego warto używać JWT zamiast plików cookie sesji?
Tokeny JWT są bezstanowe: serwer nie musi odpytywać sesji; sam token zawiera tożsamość i uprawnienia użytkownika. Sprawia to, że tokeny JWT idealnie nadają się do systemów rozproszonych i API. Pliki cookie sesji są stanowe (wymagają przechowywania sesji na serwerze), ale łatwiej je unieważnić (wystarczy usunąć sesję). Kompromis: tokeny JWT lepiej się skalują, ale nie możesz „wylogować użytkownika”, dopóki token nie wygaśnie.
Jakie są standardowe oświadczenia JWT?
RFC 7519 definiuje: iss (nadawca), sub (podmiot, zwykle identyfikator użytkownika), aud (odbiorca), exp (czas wygaśnięcia), nbf (nie wcześniej niż), iat (wydany w), jti (identyfikator JWT). Poza nimi aplikacje dodają niestandardowe oświadczenia, takie jak „roles”, „permissions” czy „tenant_id”. Utrzymuj niestandardowe oświadczenia małe: tokeny JWT podróżują w nagłówku każdego żądania i zwiększają zużycie przepustowości.

Powiązane narzędzia