JWT (JSON Web Token) to otwarty standard (RFC 7519) służący do bezpiecznego przesyłania informacji pomiędzy stronami w postaci obiektu JSON. JWT jest szeroko stosowany do uwierzytelniania w nowoczesnych aplikacjach internetowych.
Struktura JWT
JWT składa się z trzech części oddzielonych kropkami:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
1. Nagłówek
{"alg": "HS256", "typ": "JWT"}
Definiuje algorytm podpisu i typ tokenu.
2. Ładunek
{"sub": "1234567890", "name": "John Doe", "iat": 1516239022, "exp": 1516242622}
Zawiera oświadczenia — dane użytkownika i metadane tokenu.
3. Podpis
Gwarantuje integralność tokena. Dla HS256:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Jak działa uwierzytelnianie JWT
- Użytkownik przesyła login i hasło
- Serwer sprawdza poprawność danych i tworzy token JWT
- Klient przechowuje token (localStorage, cookie)
- Do każdego żądania Klient przesyła:
Authorization: Bearer <token> - Serwer weryfikuje podpis i wyodrębnia dane z ładunku
Debuger JWT
Użyj tegoDebuger JWT Xuverodo dekodowania i analizowania tokenów.
Bezpieczeństwo JWT
- Przechowuj tokeny w pliku cookie httpOnly, a nie w localStorage
- Ustaw krótki czas trwania (15–30 minut)
- Użyj tokena odświeżania, aby zaktualizować
- Nigdy nie przechowuj wrażliwych danych w ładunku
- Sprawdź to
algna serwerze — ochrona przed atakiem „alg: none”.