Przejdź do treści głównej
FreeOnlineTools Go
Polski
Jak

Jak Dekodować JWT i Bezpiecznie Inspekcjonować Jego Claims

Autor: FreeOnlineTools Team · Zaktualizowano 2026-08-28

Szybka odpowiedź

JWT to trzy ciągi Base64URL połączone kropkami: header.payload.signature. Zdekoduj header i payload przez Base64URL decoding aby inspectować claims —ale dekodowanie tylko czyta dane, nie weryfikuje autentyczności. Zawsze weryfikuj signature na serverze. Użyj naszego JWT Decoder aby inspectować tokeny.

Wstęp

JSON Web Token (JWT, RFC 7519) to kompaktowy, URL-safe format tokenu używany do autentykacji i autoryzacji. Ma trzy części zakodowane Base64URL oddzielone kropkami: header.payload.signature. Header opisuje algorytm, payload niesie claims (user id, roles, expiry), a signature udowadnia, że token został wydany przez zaufaną stronę. Kluczowe: header i payload są zakodowane, nie zaszyfrowane —każdy może je przeczytać.

Krok po kroku

  1. Podziel token na trzy części

    JWT wygląda jak xxxxx.yyyyy.zzzzz. Podziel znak kropki, aby uzyskać nagłówek (część 0), ładunek (część 1) i podpis (część 2). Jeśli nie ma dokładnie trzech części, token jest zniekształcony.

  2. Base64URL - dekoduj nagłówek

    Nagłówek jest obiektem JSON zakodowanym w formacie Base64URL, takim jak {"alg":"HS256","typ":"JWT"}. Base64URL używa - i _ zamiast + i / oraz pomija dopełnienie. Odkoduj go, a następnie JSON.parse, aby odczytać algorytm i wpisać. Nasz dekoder JWT robi to automatycznie.

  3. Base64URL - dekodowanie ładunku (oświadczenia)

    Ładunek jest JSON przedmiotem roszczeń. Zarejestrowane roszczenia obejmują iss (wydawca), sub (podmiot), aud (odbiorcy), exp (wygaśnięcie), nbf (nie wcześniej), iat (wydany w) i jti (identyfikator tokena). Roszczenia prywatne są specyficzne dla aplikacji (np. rola, adres e-mail). Odkoduj i sprawdź, ale nie ufaj, dopóki nie zostanie to zweryfikowane.

  4. Sprawdź roszczenia dotyczące wygaśnięcia i nie wcześniejsze

    exp i nbf to uniksowe znaczniki czasu (sekundy). Jeśli bieżący czas minął już po upływie terminu ważności, token traci ważność i należy go odrzucić. Jeżeli bieżący czas przypada przed nbf, token nie jest jeszcze ważny. Sprawdź je po stronie klienta pod kątem UX, ale egzekwuj je po stronie serwera ze względów bezpieczeństwa.

  5. Zweryfikuj podpis na serwerze (nigdy po stronie klienta)

    Podpis to HMAC-SHA256(sekret, nagłówek.ładunek) dla HS256 lub podpis RSA/ECDSA dla RS256/ES256. Weryfikacja wymaga podania tajnego lub publicznego klucza, który nigdy nie może dotrzeć do przeglądarki. Do weryfikacji użyj biblioteki takiej jak jsonwebtoken (Node) lub jose – nigdy nie pisz własnego krypto.

Przykłady

Typowy JWT (trzy części)

Wejście: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpmeJf36POk6yJV_adQssw5c

Wyjście: Header: {"alg":"HS256","typ":"JWT"} Payload: {"sub":"1234567890","name":"John Doe","iat":1516239022}

Odkodowany ładunek ze standardowymi roszczeniami

Wejście: Ładunek prawdziwego tokena uwierzytelniającego

Wyjście: {"sub":"user-42","iss":"freeonlinetoolsgo.com","exp":1767229200,"iat":1767225600,"role":"admin"}

Wykrywanie wygasłego tokenu

Wejście: exp: 1609459200 (2021-01-01) sprawdzony 28.08.2026

Wyjście: Token is expired —current time (1767225600) > exp (1609459200). Reject and prompt re-login.

Typowe problemy

  • Traktuj dekodowanie jako weryfikację: każdy może stworzyć JWT z dowolnymi roszczeniami i fałszywym podpisem. Dekodowanie odczytuje ładunek, ale niczego nie dowodzi. Zawsze sprawdzaj podpis za pomocą tajnego/publicznego klucza na serwerze, zanim zaufasz oświadczeniom.
  • Używanie algorytmu „none”: specyfikacja JWT pozwala na alg: none dla niezabezpieczonych tokenów. Jeśli Twój weryfikator zaakceptuje alg: none, osoba atakująca może sfałszować tokeny. Skonfiguruj swoją bibliotekę tak, aby nie odrzucała żadnej i umieściła oczekiwane algorytmy na białej liście.
  • Przechowywanie JWT w localStorage: XSS może odczytywać localStorage i wydobywać tokeny. Preferuj pliki cookie httpOnly, Secure, SameSite=Strict dla tokenów sesji lub krótkotrwałe tokeny w pamięci z plikiem cookie tokenu odświeżania.
  • Brak sprawdzania exp/aud/iss: skradziony token jest ważny do momentu jego wygaśnięcia. Zawsze sprawdzaj exp (wygaśnięcie), aud (docelowi odbiorcy) i iss (wystawca) przy każdym żądaniu, aby zapobiec ponownemu odtwarzaniu tokenu między usługami.

Porady

  • Używaj krótkotrwałych tokenów dostępu (15 minut) i długotrwałych tokenów odświeżających — ogranicza to okno w przypadku kradzieży tokenu dostępu.
  • Preferuj RS256 (asymetryczny) zamiast HS256 (symetryczny), gdy wiele usług weryfikuje tokeny: każda usługa otrzymuje klucz publiczny, a tylko wystawca ma klucz prywatny.
  • Użyj naszego dekodera JWT podczas programowania, aby sprawdzić, co wydaje serwer — pokazuje zdekodowany nagłówek, ładunek i czytelne dla człowieka podsumowanie roszczenia bez wysyłania gdziekolwiek tokena.
  • Nigdy nie umieszczaj wrażliwych danych (haseł, informacji umożliwiających identyfikację) w ładunku JWT — są one zakodowane w Base64, a nie zaszyfrowane, a każdy, kto przechwyci token, może przeczytać każde żądanie.

Powiązane narzędzia

Powiązane przewodniki

Referencje