Jak Dekodować Tokeny JWT i Bezpiecznie Inspekcjonować Claims
Szybka odpowiedź
Aby zdekodować JWT: wklej token do JWT Decoder i header i payload pojawiają się natychmiast jako sformatowany JSON. Narzędzie dekoduje części Base64URL lokalnie —token nigdy nie opuszcza przeglądarki. Pamiętaj: dekodowanie tylko pokazuje zawartość; nie weryfikuje signature.
Wstęp
JWT (JSON Web Token) to kompaktowy, URL-safe format tokenu używany do autentykacji i wymiany informacji. JWT ma trzy części oddzielone kropkami: header.payload.signature. Header określa algorytm, payload zawiera claims (user ID, roles, expiration), a signature udowadnia, że token nie został zmodyfikowany. Dekodowanie pozwala inspectować zawartość do debugowania —ale nie weryfikuje autentyczności.
Krok po kroku
-
Otwórz narzędzie dekodera JWT
Przejdź do strony narzędzia dekodera JWT. Narzędzie akceptuje dowolny ciąg znaków JWT (trzy części zakodowane w formacie Base64URL oddzielone kropkami).
-
Wklej swój token JWT
Wklej JWT w polu wejściowym. Typowy JWT wygląda następująco: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSJ9.signature. Narzędzie automatycznie wykrywa trzy części.
-
Przejrzyj zdekodowany nagłówek
Narzędzie Base64URL-dekoduje pierwszą część i wyświetla ją jako JSON. Nagłówek zazwyczaj zawiera „alg” (algorytm, np. HS256) i „typ” (typ, zwykle „JWT”).
-
Przejrzyj zdekodowany ładunek (oświadczenia)
Narzędzie dekoduje drugą część i wyświetla oświadczenia w formacie JSON. Typowe oświadczenia obejmują „sub” (identyfikator podmiotu/użytkownika), „iat” (wydany w), „exp” (wygaśnięcie) i „rola” (rola użytkownika).
-
Sprawdź podpis (trzecia część)
Narzędzie pokazuje część podpisu. Uwaga: dekodowanie NIE weryfikuje podpisu. Do weryfikacji potrzebny jest klucz podpisywania i biblioteka weryfikacyjna. Nigdy nie ufaj twierdzeniom JWT bez sprawdzenia podpisu po stronie serwera.
Przykłady
Odszyfruj prosty JWT
Wejście: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTY5MzUyNjQwMH0.signature
Wyjście: Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user1","name":"Alice","iat":1693526400}
__ZACHOWAJ_18__ z roszczeniem o wygaśnięcie
Wejście: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY5MzYxMjgwMH0.sig
Wyjście: Header: {"alg":"HS256"}
Payload: {"sub":"admin","exp":1693612800}
Typowe problemy
- Mylenie dekodowania z weryfikacją — dekodowanie JWT powoduje jedynie odczytanie jego zawartości; NIE dowodzi to, że token jest autentyczny. Zawsze sprawdzaj podpis po stronie serwera za pomocą klucza podpisu.
- Ufanie wygasłym tokenom — sprawdź żądanie „exp” i odrzuć wygasłe tokeny. Wartość „exp” to uniksowy znacznik czasu w sekundach.
- Base64 vs Base64URL —JWT używa kodowania Base64URL (bez dopełnienia, - i _ zamiast + i /). Standardowy dekoder Base64 nie będzie działał na częściach JWT.
- Wrażliwe dane w ładunku — JWT ładunki są czytelne dla każdego, kto ma token. Nie przechowuj haseł, numerów kart kredytowych ani innych tajemnic w ładunku.
Porady
- Zawsze sprawdzaj podpis JWT po stronie serwera, zanim zaufasz jakimkolwiek twierdzeniom — samo dekodowanie nie jest uwierzytelnieniem.
- Sprawdź oświadczenia „exp” (wygaśnięcie) i „nbf” (nie wcześniej), aby upewnić się, że token jest ważny w bieżącym czasie.
- Używaj tokenów krótkotrwałych (15–60 minut) z tokenami odświeżania w przypadku długich sesji — minimalizuje to szkody w przypadku wycieku tokenu.
- Użyj naszego dekodera JWT do bezpiecznego, lokalnego debugowania — Twój token nigdy nie opuszcza przeglądarki.