Czym jest to narzędzie?
JWT (JSON Web Token) to zwięzły ciąg znaków, który można bezpiecznie umieszczać w adresach URL, służący do przekazywania oświadczeń między dwiema stronami — najczęściej jako token uwierzytelniający po zalogowaniu. Składa się z trzech części oddzielonych kropkami: nagłówka (algorytm i typ tokenu), ładunku (rzeczywiste oświadczenia — identyfikator użytkownika, role, termin ważności itp.) oraz podpisu (używanego przez serwer do weryfikacji, czy token nie został sfałszowany).
Nagłówek i treść to po prostu dane JSON zakodowane w formacie Base64URL — nie są one zaszyfrowane — więc każdy może je zdekodować i odczytać bez klucza tajnego. Jedynie weryfikacja podpisu wymaga użycia klucza tajnego. Właśnie to robi to narzędzie: dekoduje czytelne fragmenty i wyświetla je w sformatowanym formacie JSON, nie próbując weryfikować podpisu.
Dlaczego warto go używać?
- Natychmiast czytelny nagłówek i dane użytkowe w formacie JSON — koniec z ręcznym dzielenie ciągu znaków i dekodowaniem Base64.
- Automatyczna kontrola ważności: jeśli ładunek zawiera atrybut „exp”, jest on przekształcany na czytelny format daty i oznaczany jako nieważny lub ważny.
- Kopiowanie jednym kliknięciem – osobno dla nagłówka lub treści.
- W 100% po stronie klienta — token jest dekodowany lokalnie i nigdy nie jest przesyłany, dzięki czemu można z niego bezpiecznie korzystać nawet w przypadku tokenów pochodzących z systemu produkcyjnego.
- Nie przeprowadzono ani nie zadeklarowano weryfikacji podpisu — jest to narzędzie do debugowania/kontroli, a nie narzędzie do walidacji.
Jak używać
- Wklej swój token JWT do pola (cały ciąg znaków, łącznie z trzema częściami oddzielonymi kropkami).
- Nagłówek i treść są dekodowane automatycznie w trakcie wpisywania.
- Jeśli token posiada atrybut „exp”, sprawdź wiersz dotyczący daty wygaśnięcia — zawiera on dokładną datę oraz informację, czy token wygasł.
- Kliknij przycisk „Kopiuj” pod dowolnym polem, aby skopiować tę sekcję w formacie JSON.
Przykład
Wejście
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQWynik
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}Podpis (trzecia część) nigdy nie jest dekodowany ani sprawdzany — jest to nieprzejrzysty skrót wykorzystywany po stronie serwera do weryfikacji autentyczności.
Praktyczne wskazówki
- Rozwiązywanie błędów typu „invalid token”: najpierw zdekoduj dane użytkowe, aby sprawdzić pole „exp” — najczęstszą przyczyną jest wygasły token, co nie zawsze wynika jasno z samego komunikatu o błędzie.
- Sprawdź, co faktycznie zawiera token z zewnętrznego interfejsu API: wiele interfejsów API zwraca jako token dostępu token JWT, który na pierwszy rzut oka wydaje się niejasny — zdekoduj go tutaj, aby sprawdzić zakresy uprawnień, identyfikator użytkownika lub termin ważności, które faktycznie otrzymuje Twoja integracja.
- Nigdy nie zakładaj, że token JWT jest zaszyfrowany: jeśli podczas prac programistycznych zauważysz poufne dane (adres e-mail, wewnętrzne identyfikatory) w zdekodowanej treści, oznacza to, że należy przenieść te dane na stronę serwera, zamiast polegać na tym, że klient ich nie odczyta.
Typowe treści, które można spotkać w ładunku
| Roszczenie | Znaczenie |
|---|---|
| sub | Temat — zazwyczaj identyfikator użytkownika, którego dotyczy token |
| exp | Czas wygaśnięcia (znacznik czasu Unix) — po upływie tego czasu token traci ważność |
| iat | Wydano w — w momencie utworzenia tokenu |
| iss | Emitent — która usługa/który serwer wygenerował token |
| aud | Grupa docelowa — do jakiej usługi przeznaczony jest token |
| rola / role / zakres | Atrybuty niestandardowe — uprawnienia lub role przyznane użytkownikowi (nie są częścią standardu JWT, ale są niezwykle powszechne) |
Najczęściej zadawane pytania
Czy to narzędzie weryfikuje podpis JWT?
Nie. Weryfikacja podpisu wymaga klucza prywatnego lub klucza publicznego użytego do podpisania tokenu, który posiada wyłącznie serwer wydający. To narzędzie dekoduje jedynie nagłówek i treść — części czytelne dla człowieka — dzięki czemu można sprawdzić oświadczenia i datę wygaśnięcia bez konieczności posiadania jakiegokolwiek klucza.
Czy można tu bezpiecznie wkleić prawdziwy token JWT z środowiska produkcyjnego?
Dekodowanie odbywa się w całości w przeglądarce za pomocą JavaScript — token nigdy nie jest wysyłany na żaden serwer, w tym na nasz. Należy jednak traktować tokeny tak samo jak hasła: nie wklejaj ich do narzędzi, którym nie ufasz, i unikaj udostępniania zrzutów ekranu z zdekodowanymi tokenami zawierającymi poufne informacje.
Dlaczego każdy może odczytać zawartość mojego tokenu JWT bez hasła?
Zgodnie z założeniami — nagłówek i treść tokenu JWT są zakodowane w formacie Base64URL, a nie zaszyfrowane. Kodowanie nie zapewnia bezpieczeństwa; służy jedynie do tego, by dane JSON nadawały się do przesyłania przez sieć. Nigdy nie umieszczaj poufnych danych (haseł, numerów kart kredytowych) bezpośrednio w treści tokenu JWT — należy założyć, że każdy, kto posiada ten token, może odczytać jego zawartość.
Co oznacza oznaczenie „exp” i dlaczego ma to znaczenie?
„exp” to czas wygaśnięcia tokenu, podany jako znacznik czasu systemu Unix (liczba sekund od 1970 roku). Serwery odrzucają token JWT po upływie tego czasu, zmuszając klienta do ponownego uwierzytelnienia. To narzędzie przekształca ten czas na czytelny format daty i sygnalizuje, czy token już wygasł, co jest przydatne podczas debugowania problemów typu „dlaczego moja sesja się wylogowała”.
Mój token wyświetla błąd analizy JSON — dlaczego?
Albo ciąg znaków nie jest prawidłowym tokenem JWT (powinien składać się dokładnie z trzech części oddzielonych kropkami), albo został skrócony lub zmieniony — częstą przyczyną jest przypadkowe podzielenie tokenu na kilka wierszy lub brak końcowych znaków podczas kopiowania.