Utilia

Dekoder JWT

Odkoduj nagłówek i ładunek JWT, odczytaj exp, iat i nbf jako daty oraz zweryfikuj podpis HS256, RS256, ES256 lub EdDSA lokalnie w przeglądarce.

Tokeny to dane uwierzytelniające. To narzędzie dekoduje je i weryfikuje w twojej przeglądarce i nigdzie ich nie wysyła.

Zweryfikuj podpis

HS256/384/512: wpisz wspólny sekret. RS, PS, ES (256/384/512) i EdDSA: wklej klucz publiczny jako PEM (public key, RSA public key lub certyfikat) albo JWK (w zestawie JWK Set klucz jest dobierany po kid).

Jak odkodować token JWT

  1. Wklej token w pole JSON Web Token. Zadziała też cała wartość Authorization: Bearer …: przedrostek Bearer i wszystkie znaki nowej linii zostaną usunięte.
  2. Token jest dekodowany na bieżąco podczas wpisywania (albo po kliknięciu Dekoduj). Nagłówek i Ładunek (payload) pojawiają się jako sformatowany JSON, każdy z własnym przyciskiem Kopiuj.
  3. Przejrzyj tabelę Daty w tokenie: exp, nbf i iat są pokazane jako surowa wartość, data w twojej strefie czasowej, czas względny („za 3 godziny”, „2 dni temu”) oraz stan, np. Wygasł albo Jeszcze nieważny.
  4. Sprawdź ostrzeżenia nad wynikami – pojawiają się na przykład wtedy, gdy alg ma wartość none albo gdy data wygląda na milisekundy.
  5. Aby sprawdzić podpis, podaj klucz w sekcji Zweryfikuj podpis i kliknij przycisk Zweryfikuj podpis.

Dekodowanie to nie weryfikacja

JWT składa się z trzech części w Base64url oddzielonych kropkami: header.payload.signature. Nagłówek i ładunek są tylko zakodowane, a nie zaszyfrowane, więc każdy, kto ma token, może je przeczytać – a to narzędzie odkoduje dowolny token bez klucza. Oznacza to również, że odkodowany ładunek niczego nie dowodzi: ktoś mógł go zmienić. Dopiero poprawny podpis pokazuje, że token wystawił właściciel klucza i że od tamtej pory nikt go nie modyfikował. Dlatego linia stanu pokazuje „Zdekodowano (podpis niezweryfikowany).”, dopóki nie wykonasz weryfikacji.

Token z pięcioma częściami to JWE (zaszyfrowany JWT). Jego treści nie da się odczytać bez klucza deszyfrującego i narzędzie wyraźnie o tym informuje.

Weryfikacja podpisu

  • HS256, HS384, HS512 (HMAC): wpisz wspólny Sekret. W polu Format sekretu wskaż, czy to zwykły tekst (UTF-8), czy Base64/Base64url – niektórzy dostawcy przechowują sekrety w Base64. Możesz też wkleić JWK typu oct. Jeśli sekret jest krótszy niż wynik funkcji skrótu (32 bajty dla HS256), narzędzie zaznaczy, że jest poniżej minimum z RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 i EdDSA: wklej Klucz publiczny (PEM lub JWK). Akceptowane bloki PEM to PUBLIC KEY, RSA PUBLIC KEY i CERTIFICATE (klucz jest wtedy odczytywany z certyfikatu X.509). Działa też pojedynczy JWK albo cały JWK Set: używany jest klucz, którego kid pasuje do nagłówka. Klucze prywatne są odrzucane – do weryfikacji nigdy nie są potrzebne. EdDSA obsługuje Ed25519 w przeglądarkach, których Web Crypto go implementuje.

Weryfikacja korzysta z interfejsu Web Crypto przeglądarki. Komunikat o niepoprawnym podpisie oznacza zły klucz albo zmieniony token. Pamiętaj, że algorytm jest tu brany z nagłówka tokena – prawdziwy serwer powinien natomiast mieć oczekiwany algorytm na sztywno w konfiguracji, bo inaczej atakujący może go sam wybrać.

Uwagi dotyczące bezpieczeństwa

  • Tokeny to dane uwierzytelniające. Kto ma ważny token dostępowy, zwykle może działać w imieniu jego właściciela aż do wygaśnięcia. To narzędzie dekoduje i weryfikuje wszystko w twojej przeglądarce i nigdzie nie wysyła ani tokena, ani klucza. Mimo to unikaj wklejania tokenów produkcyjnych do narzędzi, których nie możesz sprawdzić.
  • alg: none oznacza token bez podpisu. Każdy może taki podrobić, a serwer musi go odrzucić. Narzędzie pokazuje ostrzeżenie i odmawia „weryfikacji” takiego tokena.
  • Sprawdzanie czasu odbywa się według zegara twojego komputera, bez żadnej tolerancji; serwery często dopuszczają minutę lub dwie różnicy zegarów.
  • Daty w JWT (NumericDate) to sekundy od 1 stycznia 1970 r. UTC. Wartość 13-cyfrowa to najpewniej milisekundy – częsty błąd.

Najczęściej zadawane pytania

Czy to narzędzie powie mi, czy token jest ważny?

Powie, czy podpis pasuje do podanego klucza i czy warunki exp oraz nbf są w tej chwili spełnione. To, czy token zostanie zaakceptowany, zależy jednak także od kontroli znanych tylko serwerowi: oczekiwanego wystawcy (iss), odbiorcy (aud), algorytmu i ewentualnego unieważnienia.

Dlaczego weryfikacja nie przechodzi, choć sekret jest dobry?

Sprawdź Format sekretu: sekret w Base64 wpisany jako tekst daje zupełnie inny klucz. Upewnij się też, że do sekretu nie dopisała się spacja ani znak nowej linii – klucze HMAC są porównywane bajt po bajcie.

Czym różnią się RS256, PS256 i ES256?

Wszystkie trzy to podpisy z kluczem publicznym i SHA-256. RS256 używa RSA z dopełnieniem PKCS#1 v1.5, PS256 – RSA z dopełnieniem PSS, a ES256 – ECDSA na krzywej P-256, co daje znacznie krótsze podpisy.

Gdzie znajdę klucz publiczny dostawcy tożsamości?

Dostawcy tożsamości publikują JWKS (JSON Web Key Set), zwykle podlinkowany w /.well-known/openid-configuration pod kluczem jwks_uri. Otwórz go samodzielnie i wklej tu JSON; narzędzie wybierze klucz po kid i niczego nie pobiera z sieci.

Czy wklejanie tokena tutaj jest bezpieczne?

Token zostaje na twoim urządzeniu: dekodowanie i weryfikacja odbywają się lokalnie, nic nie jest przesyłane. Dla większej ostrożności używaj tokena wygasłego lub testowego, gdy chcesz tylko obejrzeć jego strukturę.