dekoduj | sprawdź | zweryfikuj

> dekoduj | sprawdź | zweryfikuj <

// Dekoduj i sprawdzaj JSON Web Tokens (JWT) natychmiastowo

[BEZPIECZNE]

Lokalne Przetwarzanie

100% dekodowanie JWT po stronie klienta. Twoje tokeny nigdy nie opuszczają przeglądarki.

[NATYCHMIAST]

Auto-Dekodowanie

Automatyczne dekodowanie tokenów JWT podczas wklejania lub pisania.

[DARMOWE]

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.

algAlgorytm
HS256HMAC + SHA-256
HS512HMAC + SHA-512
RS256RSA PKCS#1 v1.5 + SHA-256
PS256RSASSA-PSS + SHA-256
ES256ECDSA P-256 + SHA-256
EdDSAEd25519

// 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.

// INNE JĘZYKI