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.
| Twierdzenie | Znaczenie |
|---|---|
iss | Wystawca: kto utworzył i podpisał token |
sub | Podmiot: użytkownik lub jednostka, której dotyczy token |
aud | Odbiorca: dla kogo przeznaczony jest token |
exp | Czas wygaśnięcia: odrzuć token po tej chwili |
nbf | Nie przed: odrzuć token przed tą chwilą |
iat | Czas wystawienia: kiedy utworzono token |
jti | Identyfikator JWT: unikalny identyfikator, służy do zapobiegania ponownemu użyciu |
Typowe wartości alg
| Wartość alg | Znaczenie |
|---|---|
HS256 | HMAC z SHA-256; jeden wspólny sekret podpisuje i weryfikuje |
RS256 | Podpis RSA PKCS#1 v1.5 z SHA-256; klucz prywatny podpisuje, publiczny weryfikuje |
PS256 | RSA-PSS z SHA-256 |
ES256 | ECDSA na krzywej P-256 z SHA-256; krótkie podpisy |
EdDSA | Podpisy Ed25519 lub Ed448 |
none | Token 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ść.