JWT (JSON Web Tokens) et les sessions serveur sont deux façons de gérer l'authentification. Le choix dépend du type d'app (SPA, mobile, API) et des contraintes (stateless, révocation, scale).
Les JWT permettent un mode stateless : le serveur ne stocke pas de session, le token contient les claims (user id, rôles). Idéal pour les APIs consommées par des mobiles ou des SPA avec plusieurs backends. La révocation est plus délicate (blacklist, short TTL + refresh token). Les sessions (cookie, stockage serveur ou Redis) simplifient la révocation et le logout. Pour le web classique (monolith, même domaine), les sessions restent souvent plus simples et plus sûres. PKCE et refresh token rotation sont des bonnes pratiques pour les deux approches.
Conseil : sessions pour apps web classiques, JWT (avec refresh) pour APIs et SPAs multi-backend.
Points forts / Points faibles
Points forts (JWT)
- Stateless, scale horizontal facile
- Multi-backend et mobile-friendly
- Standard (RFC), interopérable
Points faibles (JWT)
- Révocation et invalidation plus complexes
- Taille du token et exposition des claims
- Stockage côté client (XSS) à sécuriser
Points forts (sessions)
- Révocation immédiate, logout simple
- Pas de données sensibles côté client
- Mature et bien compris
Points faibles (sessions)
- State côté serveur (ou Redis)
- Sticky sessions ou store partagé pour le scale