Dekoder JWT
Odczytaj nagłówek, claimy i datę wygaśnięcia JSON Web Tokena w swojej przeglądarce. Tylko dekodowanie: żaden podpis nie jest weryfikowany.
Działa w całości w twojej przeglądarce. Nic nie jest wysyłane, logowane ani przechowywane.
To narzędzie dekoduje. Nie weryfikuje. Nic poniżej nie mówi, czy token jest autentyczny. Każdy, kto ma podpisany token, może odczytać jego claimy, i każdy może napisać token, który wygląda tak jak ten. Sprawdź podpis w swojej aplikacji, swoim kluczem.
Wklej token i zobacz jego nagłówek, claimy i datę wygaśnięcia. Dekodowanie odbywa się w twojej przeglądarce: token nie jest wysyłany, rejestrowany ani przechowywany.
To narzędzie nie sprawdza podpisu i nic z tego, co ci pokaże, nie oznacza, że token jest autentyczny.
Jak to działa
JSON Web Token to trzy części zakodowane w base64url, oddzielone kropkami: nagłówek, który mówi, jakim algorytmem go podpisano, ładunek z claimami i podpis obejmujący dwie pierwsze części. Te dwie pierwsze są zakodowane, a nie zaszyfrowane: każdy, kto ma token, może je odczytać — i dokładnie to dzieje się tutaj.
Zarejestrowane claimy czasowe są pokazywane jako czytelne daty: `exp` — kiedy token przestaje być ważny, `nbf` — kiedy zaczyna być ważny, `iat` — kiedy został wydany. Są porównywane z twoim zegarem, żeby powiedzieć, w którym miejscu swojego okna ważności znajduje się token.
Podpis jest pokazywany tak, jak został zapisany, i nie jest dekodowany. To podpis nad bajtami, a nie nad tekstem, i pokazanie go jako znaków sugerowałoby, że coś mówi.
Przykłady
| Przypadek | Dane wejściowe | Wynik |
|---|---|---|
| Token, który deklaruje, że nie ma podpisu | eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIn0. | alg none, typ JWT, sub 1234567890 |
Najczęściej zadawane pytania
Dlaczego nie weryfikuje podpisu?
Bo weryfikacja wymaga klucza podpisującego, a strona, która by o niego prosiła, prosiłaby cię o wklejenie do serwisu internetowego sekretu chroniącego twój system. Jest też subtelniejszy powód: dekoder, który sprawiałby wrażenie weryfikującego, zachęcałby do zaufania ładunkowi, który mógł napisać ktokolwiek. Weryfikuj w swojej aplikacji, swoim kluczem.
Czy JWT jest zaszyfrowany?
Nie. Podpisany token jest zakodowany, a to nie to samo: każdy, kto go ma, może odczytać wszystkie jego claimy, bez żadnego klucza. Nigdy nie umieszczaj w tokenie niczego, czego jego posiadacz nie powinien widzieć. Tokeny szyfrowane istnieją — mają pięć części zamiast trzech — i to narzędzie nie potrafi ich odczytać.
Co oznacza algorytm „none”?
Że token nie ma żadnego podpisu. To najstarszy atak na JWT: usunąć podpis, ustawić `alg` na `none` i liczyć na to, że biblioteka po stronie odbiorcy go zaakceptuje. Strona ostrzega przed takim tokenem; jeśli patrzysz na taki, którego sam nie utworzyłeś, traktuj go jako wrogi.
Czy mój token opuszcza przeglądarkę?
Nie. Dekodowanie działa lokalnie w JavaScripcie, a to narzędzie nie ma linku do udostępnienia, bo link umieściłby token w adresie URL, skąd trafiłby do historii przeglądarki i do logów serwera.
Warto wiedzieć
- Tylko dekodowanie. Żaden podpis nie jest weryfikowany i nic na tej stronie nie mówi, czy token jest autentyczny.
- Token jest dekodowany w twojej przeglądarce i nigdy nie jest wysyłany, rejestrowany ani przechowywany. Narzędzie wymaga JavaScriptu; bez niego nie ma dekodowania w ogóle.
- Podpisany token może odczytać każdy, kto go ma. Traktuj wszystkie jego claimy jako publiczne.
Źródła
Wszystkie narzędzia z kategorii Kod