Développement & Déploiement
Gérer l'authentification JWT avec Symfony et React
Tokens d'accès/refresh, intercepteurs client et bonnes pratiques.
O
Online Toolset TeamEditorial Team
8 min de lecture
Le couple Symfony + React avec JWT permet une authentification stateless, idéale pour les SPA et applications mobiles, avec un cycle access/refresh sécurisé.
À retenir (TL;DR) Access token court en mémoire + refresh token en cookie httpOnly SameSite/Secure. Intercepteurs (Axios/Fetch) pour ajouter Bearer et relancer la requête après 401 si le refresh réussit. Côté Symfony: LexikJWTAuthenticationBundle, expiration courte, rotation/blacklist de refresh, rate limiting.
Principe JWT
- Structure: header.payload.signature (Base64URL). Standard:RFC 7519
- Ne pas stocker de secrets dans le payload. Les claims sont lisibles côté client.
- Signature HS256/RS256. Préférez RS256 en prod (clés asymétriques).
Symfony (serveur)
- Bundle recommandé:LexikJWTAuthenticationBundle(génère
private.pem/public.pem). - Endpoints usuels:
POST /login_check(délivre access+refresh),POST /token/refresh. - security.yaml: firewalls publics vs protégés, authenticator
jwt,access_control. - Optionnel: API Platform pour exposer les ressources et sécuriser via expressions
security.
React (client)
- Stocker l'access token en mémoire (state), éviter
localStoragesi possible. - Refresh token en cookie httpOnly + SameSite=Lax/Strict, Secure en HTTPS.
- Intercepteurs Axios/Fetch: ajouter
Authorization: Bearer; sur 401 essayer un refresh une fois. - Gestion requêtes: React Query ou RTK Query pour retries, invalidation et états.
Flux de rafraîchissement
- Requête avec access token.
- Si 401 expiration, appeler
/token/refresh(le cookie refresh est envoyé automatiquement). - Si OK → mettre à jour l'access token en mémoire et relancer la requête initiale.
- Si KO → forcer le logout et rediriger vers login.
Bonnes pratiques
- Access tokens 5–15 min; refresh 7–30 jours avec rotation et liste de révocation côté serveur.
- Claims minimaux; pas de données sensibles; définir
aud,iss,exp. - CSRF: si endpoints utilisent des cookies, protéger via token CSRF et SameSite approprié.
- Rate‑limit
/login_checket/token/refresh; journaliser les tentatives.
Outils cités
- LexikJWTAuthenticationBundle
- API Platform
- Axios, React Query / Redux Toolkit Query
- Symfony Security
JWTSymfonyReactSécurité
À propos de l'auteur
O
Online Toolset TeamEditorial Team
The Online Toolset editorial team produces practical guides on web development, image optimization, productivity, and digital tools.
Web DevelopmentImage OptimizationDevOpsUI/UXProductivity