UltKit

Dekoder JWT

Wklej JSON Web Token, a nagłówek i payload zobaczysz jako sformatowany JSON. Czas wygaśnięcia i wystawienia pojawi się jako zwykła data, a obok informacja, czy token jest w tej chwili ważny. Dekodowanie odbywa się w całości w przeglądarce. Ma to znaczenie, gdy token to aktywne dane uwierzytelniające.

Znaki: 0 · słowa: 0 · wiersze: 0

Znaki: 0 · słowa: 0 · wiersze: 0

Działa w całości w tej karcie przeglądarki. Twój tekst nie jest wysyłany ani zapisywany.

Zarejestrowane twierdzenia (claims)

Siedem nazw twierdzeń zdefiniowanych w RFC 7519 §4.1. Wszystkie są opcjonalne; czasy podano w sekundach od 1970-01-01 UTC.

TwierdzenieZnaczenie
issWystawca: kto utworzył i podpisał token
subPodmiot: użytkownik lub jednostka, której dotyczy token
audOdbiorca: dla kogo przeznaczony jest token
expCzas wygaśnięcia: odrzuć token po tej chwili
nbfNie przed: odrzuć token przed tą chwilą
iatCzas wystawienia: kiedy utworzono token
jtiIdentyfikator JWT: unikalny identyfikator, służy do zapobiegania ponownemu użyciu

Typowe wartości alg

Wartość algZnaczenie
HS256HMAC z SHA-256; jeden wspólny sekret podpisuje i weryfikuje
RS256Podpis RSA PKCS#1 v1.5 z SHA-256; klucz prywatny podpisuje, publiczny weryfikuje
PS256RSA-PSS z SHA-256
ES256ECDSA na krzywej P-256 z SHA-256; krótkie podpisy
EdDSAPodpisy Ed25519 lub Ed448
noneToken niepodpisany; serwery powinny go odrzucać

Co zawiera JSON Web Token

JWT jest zdefiniowany w RFC 7519 (maj 2015), który sugeruje wymawianie go jak angielskie słowo „jot”. Typowa podpisana postać to trzy ciągi Base64url połączone kropkami: nagłówek.ładunek.podpis. Nagłówek (header) podaje algorytm podpisu w polu alg, np. HS256 lub RS256, a często także identyfikator klucza w kid. Ładunek (payload) zawiera oświadczenia (claims), czyli pola JSON takie jak sub (użytkownik), iss (wystawca), aud (odbiorca, dla którego token jest przeznaczony) oraz exp, nbf i iat, które są czasami wyrażonymi w sekundach od 1 stycznia 1970 UTC. Dekoder przelicza te trzy wartości na Twój czas lokalny i format ISO 8601 oraz informuje, czy token wygasł, czy jeszcze nie jest ważny, czy mieści się w okresie ważności.

Base64url to kodowanie, a nie szyfrowanie, więc każdy, kto ma token, może odczytać jego ładunek dokładnie tak jak na tej stronie. Nigdy nie umieszczaj w oświadczeniach haseł, numerów kart ani innych sekretów. Token składający się z pięciu części oddzielonych kropkami to JWE, czyli token zaszyfrowany; jego zawartości nie da się odczytać bez klucza, o czym dekoder informuje. Początkowe „Bearer ” skopiowane z nagłówka Authorization jest usuwane automatycznie.

Dlaczego podpis nie jest tutaj weryfikowany

Podpis dowodzi, że nagłówek i ładunek zostały utworzone przez posiadacza klucza i od tamtej pory nie zostały zmienione. Jego sprawdzenie wymaga tego klucza: wspólnego sekretu dla algorytmów HMAC, takich jak HS256, albo klucza publicznego wystawcy dla RS256, ES256 lub EdDSA. Wklejanie produkcyjnego sekretu podpisującego na jakąkolwiek stronę internetową to zły pomysł, a dekoder udający, że poświadcza token bez klucza, dawałby fałszywe poczucie bezpieczeństwa, dlatego to narzędzie pokazuje podpis, ale go nie weryfikuje. Traktuj to, co widzisz, jako twierdzenie zawarte w tokenie, a nie jako fakt.

Weryfikacja powinna odbywać się na Twoim serwerze, z użyciem utrzymywanej biblioteki i z narzuconym oczekiwanym algorytmem. Wyjaśniają to dwa historyczne błędy: akceptowanie alg „none”, które pozwala każdemu sfałszować niepodpisany token, oraz pomylenie algorytmów, gdy serwer oczekujący RS256 zostaje nakłoniony do sprawdzenia podpisu HS256 z użyciem klucza publicznego jako sekretu HMAC. Dekoder służy do debugowania: pozwala zobaczyć, jakie oświadczenia wystawia dostawca, zauważyć błędnego odbiorcę (aud) albo odkryć, że sesja przestała działać, bo exp minął minutę temu. Aby odczytać surowe segmenty Base64url, użyj dekodera Base64.

Najczęściej zadawane pytania

Czy wklejenie prawdziwego tokena dostępu do dekodera JWT jest bezpieczne?
Na tej stronie token nigdy nie opuszcza Twojej przeglądarki. Mimo to ważny token działa jak hasło aż do wygaśnięcia, więc lepiej używaj tokenów wygasłych lub testowych i nie umieszczaj aktywnych na zrzutach ekranu ani w czatach.
Dlaczego token jest oznaczony jako wygasły, choć dopiero go wystawiono?
Najpierw sprawdź zegar w urządzeniu. Niektórzy wystawcy nadają tokenom dostępu ważność tylko kilku minut, a token skopiowany z logów może być starszy, niż się wydaje. Wartość exp zapisana w milisekundach zamiast w sekundach działa odwrotnie i wypada tysiące lat w przyszłości.
Czy ktoś może zmienić payload mojego tokena JWT?
Mogą go edytować i zakodować ponownie, ale podpis przestanie pasować. Serwer, który weryfikuje podpisy właściwym kluczem i algorytmem, odrzuci zmieniony token.
Czym różni się JWS od JWE?
JWS (RFC 7515) jest podpisany, ma trzy części i każdy może go odczytać. JWE (RFC 7516) jest zaszyfrowany, ma pięć części, a ładunek może odczytać tylko posiadacz klucza.
Czy wylogowanie unieważnia token JWT?
Samo w sobie nie. Podpisany JWT pozostaje ważny do exp, chyba że serwer prowadzi listę zablokowanych tokenów lub sprawdza zapis sesji, dlatego tokenom dostępu zwykle nadaje się krótką ważność.