JWT są dobre dla stateless API i autoryzacji między usługami, ale trudno je unieważnić i potrafią puchnąć. Sesje po stronie serwera łatwo unieważniać i rotować, więc są lepsze dla aplikacji webowych wymagających kontroli i krótkich sesji.
Odpowiedź zaawansowana
Głębiej
JWT są przydatne, ale mają ostre krawędzie:
Dobre dla stateless API i S2S z krótkim TTL.
Trudne do unieważnienia; użyj krótkich access tokenów i rotacji refresh.
Sesje serwerowe dają kontrolę, revokację i step-up MFA.
Tokeny trzymaj w cookies HttpOnly, SameSite; unikaj localStorage.
Przykłady
Podejście z sesją:
Cookie: session_id=abc123 (HttpOnly, Secure, SameSite=Lax)
Serwer waliduje sesję w Redis i może ją natychmiast unieważnić
Typowe pułapki
Długie TTL i wrażliwe dane w JWT.
Przechowywanie JWT w localStorage (ryzyko XSS).
JWT tam, gdzie potrzebna jest revokacja (np. admin).