Dekoder JWT
Dekoduj JSON Web Token (JWT), aby wyświetlić jego nagłówek, ładunek i podpis. Przydatne do debugowania i inspekcji tokenów JWT używanych w uwierzytelnianiu i autoryzacji. Zawartość Twojego JWT nie zostanie nigdzie zapisana.
Ładunek (roszczenia):
Nagłówek (algorytm podpisu i typ tokenu):
Podpis:
Podpis jest wyświetlany jako dane zakodowane w Base64URL. Weryfikacja podpisu nie jest wykonywana przez to narzędzie.
Więcej o JSON Web Tokens
Format JWT
JSON Web Token (JWT) to kompaktowy, bezpieczny dla URL sposób reprezentowania roszczeń do przesyłania między dwiema stronami. Składa się z trzech części zakodowanych w Base64URL, oddzielonych kropkami: nagłówek.ładunek.podpis. Nagłówek zazwyczaj zawiera typ tokenu (JWT) i algorytm podpisu. Ładunek zawiera roszczenia — oświadczenia o podmiocie (zazwyczaj użytkowniku) i dodatkowe metadane. Podpis służy do weryfikacji, że wiadomość nie została zmieniona po drodze.
JOSE (JSON Object Signing and Encryption)
JWT jest częścią większego frameworka JOSE (JSON Object Signing and Encryption), który zapewnia znormalizowany sposób zabezpieczania danych opartych na JSON. JOSE obejmuje kilka powiązanych specyfikacji: JWS (JSON Web Signature) dla podpisanych tokenów, JWE (JSON Web Encryption) dla zaszyfrowanych tokenów, JWK (JSON Web Key) do reprezentowania kluczy kryptograficznych oraz JWA (JSON Web Algorithms) do określania algorytmów kryptograficznych.
JSON Web Signature (JWS)
Większość spotykanych JWT to tokeny JWS — są podpisane, ale nie zaszyfrowane. Oznacza to, że każdy może odczytać ładunek dekodując go z Base64URL, ale nie może go zmodyfikować bez unieważnienia podpisu. JWS zapewnia integralność i autentyczność: możesz zweryfikować, że token został wydany przez zaufaną stronę i nie został zmodyfikowany.
Algorytmy podpisu
JWS obsługuje różne algorytmy kryptograficzne do podpisywania tokenów. Dzielą się one na dwie kategorie: algorytmy symetryczne (ten sam klucz do podpisywania i weryfikacji) i algorytmy asymetryczne (klucz prywatny do podpisywania, klucz publiczny do weryfikacji).
Algorytmy HMAC (symetryczne)
HS256, HS384 i HS512 używają HMAC (Hash-based Message Authentication Code) z SHA-256, SHA-384 lub SHA-512 odpowiednio. Są to algorytmy symetryczne — ten sam tajny klucz jest używany zarówno do podpisywania, jak i weryfikacji tokenu. Algorytmy HMAC są szybkie i proste, ale wymagają bezpiecznej dystrybucji klucza, ponieważ obie strony potrzebują tego samego sekretu.
Algorytmy RSA (asymetryczne)
RS256, RS384 i RS512 używają RSASSA-PKCS1-v1_5 z SHA-256, SHA-384 lub SHA-512. PS256, PS384 i PS512 używają RSASSA-PSS (probabilistyczny schemat podpisu). Algorytmy RSA używają klucza prywatnego do podpisu i klucza publicznego do weryfikacji. Pozwala to na publiczne udostępnianie klucza weryfikacyjnego bez naruszania bezpieczeństwa — idealne dla systemów rozproszonych, gdzie wiele usług musi weryfikować tokeny.
Algorytmy krzywych eliptycznych (asymetryczne)
ES256, ES384 i ES512 używają ECDSA (Elliptic Curve Digital Signature Algorithm) z krzywymi P-256, P-384 lub P-521 odpowiednio. Algorytmy EC oferują takie samo bezpieczeństwo jak RSA, ale z mniejszymi rozmiarami kluczy, co skutkuje mniejszymi podpisami i szybszymi operacjami. ES256 jest coraz bardziej popularny w nowoczesnych aplikacjach ze względu na swoją wydajność.
JSON Web Encryption (JWE)
Podczas gdy JWS zapewnia podpisane tokeny, JWE zapewnia zaszyfrowane tokeny, w których ładunek jest poufny. Tokeny JWE mają pięć części zamiast trzech: nagłówek, zaszyfrowany klucz, wektor inicjalizacji, tekst zaszyfrowany i znacznik uwierzytelniania. JWE obsługuje różne algorytmy szyfrowania, w tym AES-GCM i AES-CBC z HMAC. Należy pamiętać, że ten dekoder obsługuje tylko tokeny JWS; tokeny JWE wymagają odszyfrowania odpowiednim kluczem.
Specyfikacje RFC
Standardy JWT i JOSE są zdefiniowane w kilku RFC IETF: