# Migration vers Cookies httpOnly - Plan d'Action ## 🎯 Objectif Migrer le stockage des tokens d'authentification de `localStorage` vers des cookies `httpOnly` pour amĂ©liorer la sĂ©curitĂ© contre les attaques XSS. ## 📋 Architecture Cible ### Tokens - **Access Token** : StockĂ© en mĂ©moire uniquement (pas de localStorage, pas de cookie) - **Refresh Token** : StockĂ© dans un cookie `httpOnly`, `secure`, `sameSite=strict` ### SĂ©curitĂ© - ✅ Protection XSS : Les cookies httpOnly ne sont pas accessibles via JavaScript - ✅ Protection CSRF : SameSite=strict empĂȘche l'envoi cross-site - ✅ HTTPS only : Secure flag force HTTPS en production ## 🔄 Plan de Migration ### Phase 1 : PrĂ©paration Frontend (✅ ComplĂ©tĂ©e) 1. ✅ Activer `withCredentials` dans `apiClient` pour envoyer les cookies 2. ✅ Activer `withCredentials` dans `refreshClient` pour le refresh token 3. ✅ Adapter `tokenStorage.ts` pour stocker access_token en mĂ©moire (avec fallback localStorage) 4. ✅ CrĂ©er `cookieService.ts` pour gĂ©rer les cookies non-httpOnly si nĂ©cessaire 5. ✅ Adapter `tokenRefresh.ts` pour dĂ©tecter automatiquement les cookies httpOnly 6. ✅ Tests mis Ă  jour et passants ### Phase 2 : Backend (À faire) 1. ⏳ Modifier les endpoints `/auth/login` et `/auth/refresh` pour setter des cookies httpOnly 2. ⏳ ImplĂ©menter CSRF protection cĂŽtĂ© backend 3. ⏳ Configurer SameSite cookies ### Phase 3 : Tests & Validation 1. ⏳ Tester la persistance de session 2. ⏳ Tester le refresh automatique 3. ⏳ Tester le logout 4. ⏳ Tester la compatibilitĂ© avec les tests E2E ## 🔧 Changements Techniques ### 1. Service de Gestion des Cookies CrĂ©er `cookieService.ts` pour gĂ©rer les cookies cĂŽtĂ© client (uniquement pour les cookies non-httpOnly si nĂ©cessaire). ### 2. Modification de `tokenStorage.ts` - Supprimer le stockage du refresh token dans localStorage - Garder uniquement l'access token en mĂ©moire - Le refresh token sera gĂ©rĂ© automatiquement par le navigateur via cookies ### 3. Modification de `apiClient.ts` - Activer `withCredentials: true` pour envoyer les cookies automatiquement - Supprimer l'envoi manuel du refresh token dans les headers ### 4. Modification de `auth.ts` - Ne plus stocker le refresh token dans localStorage aprĂšs login - Le backend settera le cookie automatiquement ## ⚠ Notes Importantes - **CompatibilitĂ©** : Le systĂšme actuel continuera de fonctionner jusqu'Ă  ce que le backend soit prĂȘt - **Migration progressive** : On peut activer les cookies progressivement - **Tests** : Tous les tests doivent ĂȘtre mis Ă  jour pour gĂ©rer les cookies