Analizator JWT i tokenów
Dekoduj tokeny JWT (JSON Web Token): sprawdź header, payload, datę wygaśnięcia i claims. Weryfikacja podpisu RS256/HS256. Bezpłatnie i bezpiecznie w przeglądarce.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćAnalizator JWT – dekoduj i analizuj tokeny JSON Web Token
JWT (JSON Web Token) to standard RFC 7519 do bezpiecznego przekazywania claims między stronami. Używany w uwierzytelnianiu (Bearer token), OAuth 2.0 i OpenID Connect. Narzędzie dekoduje token bez wysyłania na serwer, wyświetla header, payload i weryfikuje podpis.
Struktura tokenu JWT
JWT = header.payload.signature (3 części rozdzielone kropkami). Header (base64url): {"alg":"HS256","typ":"JWT"}. Payload (base64url): claims – sub, iss, exp, iat, aud + custom. Signature: HMACSHA256(base64(header)+"."+base64(payload), secret) lub RSA/ECDSA. Dekodowanie header i payload: tylko base64url decode – nie wymaga klucza. Weryfikacja: wymaga klucza.
Standardowe claims JWT
sub (subject): ID użytkownika. iss (issuer): wystawca tokenu (np. auth.example.com). aud (audience): odbiorcy tokenu. exp (expiration): Unix timestamp wygaśnięcia (sekundy). iat (issued at): czas wystawienia. nbf (not before): ważny od. jti (JWT ID): unikalny identyfikator. Claim exp: zawsze sprawdź! Token przeterminowany = nieważny, mimo poprawnego podpisu.
Algorytmy podpisu JWT
HS256 (HMAC-SHA256): symetryczny – ten sam klucz do podpisywania i weryfikacji. Prosty, ale klucz musi być shared secret. RS256 (RSA-SHA256): asymetryczny – private key podpisuje, public key weryfikuje. Bezpieczniejszy dla distributed systems. ES256 (ECDSA-SHA256): mniejszy klucz niż RSA, szybszy. none: brak podpisu – NIEBEZPIECZNE, nigdy w produkcji.
Bezpieczeństwo JWT
Nigdy nie przechowuj tajnych danych w payload (dekodowanie nie wymaga klucza). Weryfikuj exp w każdym żądaniu. Nie używaj "none" algorithm. Sprawdzaj aud (audience): token dla innego serwisu nie powinien działać. Krótkiczas życia: access token 15-60 min. Refresh token: dłuższy, bezpiecznie w HttpOnly cookie. JWK (JSON Web Key): endpoint do pobierania public keys.
Najczęstsze pytania
Jak ręcznie zdekodować JWT?
echo "eyJhbGciOiJIUzI1NiJ9" | base64 -d (Linux, dodaj == padding jeśli potrzeba). Python: import base64, json; json.loads(base64.urlsafe_b64decode(part+"==")). JavaScript: atob(part.replace(/-/g,"+").replace(/_/g,"/")). Narzędzie jwt.io: popularne, ale wysyła token na serwer Googles – nie używaj z produkcyjnymi tokenami.
Jaka jest różnica między JWT a session token?
Session token: losowy string (UUID), serwer przechowuje mapowanie token→dane w DB lub Redis. JWT: self-contained – dane w tokenie, serwer nie potrzebuje DB lookup. JWT zalety: skalowalność (stateless), microservices (każdy serwis weryfikuje sam). JWT wady: niemożność unieważnienia przed exp (potrzebna blocklist), większy rozmiar.
Jak unieważnić JWT przed wygaśnięciem?
Problem: JWT jest ważny do exp, nie możesz "wylogować" tokenu jak sesji. Rozwiązania: (1) Krótki exp (15 min) + refresh token rotation. (2) Token blacklist w Redis (jti → revoked). (3) Zmiana klucza (unieważnia wszystkie tokeny naraz). (4) Versioned tokens: user.token_version w DB, token zawiera version, sprawdź czy match.
Jak testować JWT w narzędziach API?
Postman: Authorization → Bearer Token → wklej JWT. Insomnia: Auth → Bearer. curl: -H "Authorization: Bearer TOKEN". HTTPie: http GET URL "Authorization: Bearer TOKEN". Decode w terminal: echo TOKEN | cut -d. -f2 | base64 -d (tylko payload). Sprawdź exp: date -d @TIMESTAMP (Linux).
Dlaczego JWT jest krytykowany?
Złożoność: wiele scenariuszy gdzie sesje (server-side) są prostsze i bezpieczniejsze. Alg confusion: jeśli serwer akceptuje "alg":"none" = krytyczna podatność. RS256 key confusion: public key jako HMAC secret = podatność. Duży rozmiar: JWT > session token = więcej danych w każdym żądaniu. Debata: Thomas Ptacek "Stop using JWT for sessions" (2014, nadal aktualne).
Powiązane narzedzia: koder base64, generator UUID i tester naglowkow HTTP.