JWT (JSON Web Token) to kompaktowy, podpisany token zapisany w formacie JSON, używany do przekazywania informacji o użytkowniku między klientem a serwerem. Serwer może sprawdzić jego podpis bez odpytywania bazy.
Z czego składa się JWT?
Token ma trzy części oddzielone kropkami: nagłówek z algorytmem, ładunek z danymi (claims) i podpis. Ładunek jest tylko zakodowany, a nie zaszyfrowany, więc nie należy w nim umieszczać wrażliwych danych.
Do czego używa się JWT?
Najczęściej do uwierzytelniania w API oraz w aplikacjach jednostronicowych. Serwer wystawia token po zalogowaniu, a klient dołącza go do kolejnych żądań.
Jakie są zagrożenia związane z JWT?
Ryzykiem są zbyt długo ważne tokeny, słabe klucze, akceptowanie algorytmu none i przechowywanie w localStorage, skąd może je odczytać skrypt XSS. Stosuj krótki czas życia, odświeżanie tokenów i ciasteczka HttpOnly.
Token zawiera podpis, ale nie jest szyfrowany, więc nie wpisuj do niego tajnych danych.