> dekoduj | sprawdź | zweryfikuj <
// Dekoduj i sprawdzaj JSON Web Tokens (JWT) natychmiastowo
Lokalne Przetwarzanie
100% dekodowanie JWT po stronie klienta. Twoje tokeny nigdy nie opuszczają przeglądarki.
Auto-Dekodowanie
Automatyczne dekodowanie tokenów JWT podczas wklejania lub pisania.
Pełna Inspekcja Tokena
Wyświetl nagłówek, ładunek i podpis. Sprawdź algorytm i wygaśnięcie.
// O DEKODOWANIU JWT
Struktura JWT:
JSON Web Token (JWT) składa się z trzech części zakodowanych w Base64URL, oddzielonych kropkami: nagłówek.ładunek.podpis. Nagłówek określa algorytm i typ tokena. Ładunek zawiera roszczenia (dane). Podpis weryfikuje integralność tokena.
Przykład:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature → {"alg":"HS256"} + {"sub":"1234"}
Typowe Zastosowania:
- >Debugowanie tokenów uwierzytelniania w aplikacjach webowych
- >Inspekcja tokenów OAuth 2.0 i OpenID Connect
- >Weryfikacja wygaśnięcia tokenów i roszczeń
- >Zrozumienie struktury JWT zgodnie z RFC 7519
- >Sprawdzanie integralności kodowania Base64URL
>> często zadawane pytania
P: Czym jest JSON Web Token (JWT)?
O: JWT (JSON Web Token) to otwarty standard (RFC 7519) bezpiecznego przesyłania informacji między stronami jako obiekt JSON. Jest kompaktowy, bezpieczny dla URL i powszechnie używany do uwierzytelniania.
P: Jakie są trzy części JWT?
O: JWT składa się z trzech części oddzielonych kropkami: Nagłówek (algorytm i typ), Ładunek (roszczenia i dane) oraz Podpis (hash weryfikacji). Każda część jest zakodowana w Base64URL.
P: Czy JWT można zdekodować bez klucza tajnego?
O: Tak, nagłówek i ładunek JWT mogą być zdekodowane przez każdego, ponieważ są po prostu zakodowane w Base64URL (nie zaszyfrowane). Klucz tajny jest potrzebny tylko do weryfikacji podpisu.
P: Jaka jest różnica między JWT a uwierzytelnianiem sesyjnym?
O: Sesje przechowują stan na serwerze za pomocą ciasteczka z ID sesji. JWT są bezstanowe — sam token zawiera wszystkie niezbędne informacje.
P: Jak działa wygaśnięcie JWT?
O: Roszczenie exp w ładunku JWT określa czas wygaśnięcia jako znacznik czasu Unix. Po tym czasie token powinien być uznany za nieważny.
// Popularne algorytmy podpisu JWT
Wartość alg w nagłówku określa sposób podpisu. HS* używa wspólnego sekretu; RS*, PS*, ES* i EdDSA używają par kluczy.
| alg | Algorytm |
|---|---|
| HS256 | HMAC + SHA-256 |
| HS512 | HMAC + SHA-512 |
| RS256 | RSA PKCS#1 v1.5 + SHA-256 |
| PS256 | RSASSA-PSS + SHA-256 |
| ES256 | ECDSA P-256 + SHA-256 |
| EdDSA | Ed25519 |
// Weryfikacja JWT w kodzie
Samo dekodowanie niczego nie weryfikuje. Przy weryfikacji zawsze jawnie podawaj dozwolone algorytmy.
Node.js (jsonwebtoken) jwt.verify(token, secret, { algorithms: ['HS256'] })
Python (PyJWT) jwt.decode(token, key, algorithms=["HS256"])
PHP (firebase/php-jwt) JWT::decode($token, new Key($key, 'HS256'))
Go (golang-jwt) jwt.Parse(token, keyFunc, jwt.WithValidMethods([]string{"HS256"}))
Java (jjwt) Jwts.parser().verifyWith(key).build().parseSignedClaims(token)
>> Więcej pytań
P: Co oznaczają standardowe claimy iss, sub, aud, exp, nbf, iat i jti?
O: iss to wystawca, sub podmiot (zwykle ID użytkownika), aud zamierzony odbiorca, exp czas wygaśnięcia, nbf początek ważności, iat czas wystawienia, a jti unikalny identyfikator tokenu. Czasy są w sekundach Unix.
P: Czy JWT jest zaszyfrowany?
O: Zwykły podpisany JWT (JWS) nie jest zaszyfrowany, a jedynie zakodowany w Base64URL: każdy może odczytać jego zawartość. Podpis chroni tylko przed modyfikacją. Nie umieszczaj w nim danych wrażliwych albo użyj szyfrowanego JWE.
P: Jak zweryfikować podpis JWT?
O: Potrzebny jest klucz: wspólny sekret dla HS256 lub klucz publiczny dla RS256/ES256. Serwer ponownie oblicza podpis dla Nagłówek.Ładunek i porównuje go. Ten dekoder działa w przeglądarce i nie weryfikuje podpisu za Ciebie — użyj sprawdzonej biblioteki.
P: Jakie są typowe błędy bezpieczeństwa przy JWT?
O: Częste: ufanie wartości alg z samego tokenu (zwłaszcza none), słabe sekrety HS256, brak sprawdzania exp, iss i aud, dane wrażliwe w ładunku oraz długo żyjące tokeny w localStorage.