Struktura i kodowanie tokenów JSON Web Token
Standard JSON Web Token (JWT) definiuje kompaktowy i niezależny format bezpiecznego przekazywania informacji między stronami w postaci obiektu JSON. Informacje te mogą być weryfikowane i budzić zaufanie, ponieważ są podpisane cyfrowo. Token JWT składa się z trzech części rozdzielonych kropkami:
- Nagłówek (header): Zawiera metadane dotyczące tokenu, w tym typ tokenu oraz algorytm użyty do zabezpieczenia struktury.
- Ładunek (payload): Zawiera właściwe dane, czyli roszczenia (claims) dotyczące podmiotu i dodatkowych informacji.
- Podpis (signature): Służy do weryfikacji, czy nadawca tokenu jest tym, za kogo się podaje, oraz czy zawartość nie uległa zmianie.
Każda z tych części jest zakodowana przy użyciu formatu Base64URL. Kodowanie Base64URL różni się od standardowego Base64 eliminacją znaków, które mogłyby powodować problemy w adresach URL, takich jak +, / oraz znak dopełnienia =. Dekoder JWT przetwarza te zakodowane ciągi znaków z powrotem do czytelnego formatu tekstowego JSON.
Rola nagłówka i ładunku w JWT
Nagłówek tokenu JWT zawiera informacje techniczne niezbędne do poprawnego przetworzenia tokenu. Najczęściej spotykanymi roszczeniami w nagłówku są:
alg: Określa algorytm kryptograficzny użyty do wygenerowania podpisu (np. HS256, RS256).typ(Type): Określa typ tokenu, którym w tym przypadku jest zazwyczaj JWT.
Ładunek (payload) zawiera roszczenia, czyli deklaracje dotyczące użytkownika lub kontekstu operacji. Standard definiuje zestaw zarejestrowanych roszczeń, które choć opcjonalne, są powszechnie stosowane w celu zapewnienia interoperacyjności:
iat(Issued At): Wskazuje czas, w którym token został wygenerowany.exp(Expiration Time): Określa czas, po upływie którego token nie może być już akceptowany.
Wartości te są zapisywane jako znaczniki czasu w formacie Unix (liczba sekund od 1 stycznia 1970 roku).
Obsługa błędów i reguły walidacji formatu
Narzędzie analizuje strukturę wprowadzonego ciągu znaków i weryfikuje jego zgodność ze specyfikacją JWT. W przypadku wykrycia nieprawidłowości, obszary prezentujące zdekodowane dane zostają ukryte, a użytkownik widzi jeden z następujących komunikatów o błędach:
- Nieprawidłowy format JWT — oczekiwano trzech części rozdzielonych kropkami: Komunikat pojawia się, gdy wprowadzony tekst nie zawiera dokładnie dwóch kropek dzielących strukturę na trzy sekcje.
- Nie można zdekodować nagłówka — nieprawidłowy format Base64URL: Występuje, gdy pierwsza część tokenu zawiera znaki spoza alfabetu Base64URL.
- Nie można zdekodować ładunku — nieprawidłowy format Base64URL: Występuje, gdy druga część tokenu nie poddaje się dekodowaniu Base64URL.
- Nagłówek nie jest poprawnym obiektem JSON: Pojawia się, gdy zdekodowany nagłówek nie zachowuje składni formatu JSON.
- Ładunek (payload) nie jest poprawnym obiektem JSON: Pojawia się, gdy zdekodowany ładunek nie reprezentuje poprawnego obiektu JSON.
- Wprowadzony tekst jest zbyt długi, aby mógł być prawdziwym tokenem JWT: Wyświetla się w sytuacji, gdy liczba znaków w polu wejściowym przekracza dopuszczalny limit dla rzeczywistych tokenów.
Gdy pole wejściowe jest puste, narzędzie pozostaje w stanie oczekiwania, wyświetlając komunikat: Gotowe. Wklej token JWT, aby go zdekodować.. Po użyciu przycisku Wyczyść, pole wejściowe zostaje opróżnione, a kursor automatycznie do niego powraca.
Dekodowanie a weryfikacja podpisu
Istnieje kluczowa różnica pomiędzy dekodowaniem tokenu JWT a jego weryfikacją. Dekodowanie polega wyłącznie na odwróceniu procesu kodowania Base64URL w celu odczytania zawartości nagłówka i ładunku. Jest to operacja czysto tekstowa, która nie potwierdza autentyczności danych.
Weryfikacja podpisu wymaga użycia klucza kryptograficznego (sekretu w przypadku algorytmów symetrycznych lub klucza publicznego w przypadku algorytmów asymetrycznych). Bez przeprowadzenia weryfikacji podpisu nie można mieć pewności, czy dane w ładunku nie zostały zmodyfikowane przez stronę trzecią. Niniejsze narzędzie nie weryfikuje podpisu tokenu JWT i nie wymaga podawania kluczy prywatnych ani publicznych.
Prywatność i bezpieczeństwo danych
Państwa token jest dekodowany bezpośrednio w przeglądarce. Nic nie jest przesyłane do BroBroGo. Cały proces przetwarzania danych wejściowych odbywa się lokalnie w środowisku uruchomieniowym przeglądarki użytkownika, co eliminuje ryzyko przechwycenia wrażliwych danych autoryzacyjnych podczas transmisji sieciowej.
Często zadawane pytania (FAQ)
Czy wklejanie tutaj mojego tokenu JWT jest bezpieczne? Tak. Dekodowanie odbywa się w całości w Państwa przeglądarce — Państwa token nigdy nie jest wysyłany do BroBroGo.
Czy to narzędzie weryfikuje podpis? Nie. Narzędzie służy wyłącznie do dekodowania nagłówka i ładunku (payload) w celu ich odczytania. Weryfikacja podpisu wymaga klucza prywatnego lub publicznego, o które to narzędzie nigdy nie prosi.
Skąd mam wiedzieć, czy mój token wygasł? Dekoder odczytuje pole exp i wyświetla plakietkę statusu — prawidłowy, wygasł, jeszcze nieaktywny lub brak daty wygaśnięcia — tuż obok zdekodowanego tokenu.
Co oznacza status "Brak daty wygaśnięcia"?
Taki status jest wyświetlany w sytuacji, gdy zdekodowany ładunek tokenu JWT nie zawiera zarejestrowanego roszczenia exp.