Aller au contenu

Flow de connexion — Authentification (référence transversale)

Spécification utilisable par tous les projets nécessitant un module d'authentification. Couvre : login simple, 2FA (email + TOTP), gestion des tokens JWT, cas d'erreurs.

Connexion simple (sans 2FA)

  1. Saisie des identifiants — email + mot de passe
  2. Validation côté client — format email, champs non vides
  3. Vérification utilisateur — existence en base, email confirmé, compte non bloqué
  4. Vérification mot de passebcrypt.compare avec le hash stocké
  5. Vérification statut 2FA
  6. 2FA non actif → étape 6
  7. 2FA actif → #Connexion avec 2FA activé
  8. Génération des tokens — Access Token JWT (24h) + Refresh Token JWT (7 jours) + session en base
  9. Session stockée — ID session, User Agent, IP, device, localisation, dates création/activité
  10. Audit — action LOGIN, IP, device, timestamp
  11. Retour client — Access Token, Refresh Token, profil (ID, email, nom, rôle), ID session
  12. Redirection → dashboard

Connexion avec 2FA activé

Phase 1 : Connexion initiale

  1. Identifiants validés (mêmes vérifications que connexion simple)
  2. Système détecte 2FA actif
  3. Selon la méthode :
  4. EMAIL → code 6 chiffres généré, stocké en base (validité 15 min), envoyé par email
  5. APPLICATION (TOTP) → aucun envoi, l'utilisateur génère le code via son app Authenticator
  6. Création session temporaire 2FA (en attente de validation)
  7. Retour clientrequires2FA: true, méthode (EMAIL ou APPLICATION)
  8. Redirection → page de vérification 2FA

Phase 2 : Vérification du code 2FA

  1. Saisie du code 6 chiffres (reçu par email ou généré par l'app)
  2. Validation selon méthode :
  3. EMAIL — existence + non-expiré (< 15 min) + non-utilisé + correspondance
  4. TOTP — récupération secret, génération code attendu, comparaison dans fenêtre ±30 s
  5. Gestion erreurs — max 5 tentatives, blocage temporaire si dépassé
  6. Si code valide → génération Access Token (24h) + Refresh Token (7j) + session complète
  7. Code EMAIL marqué comme utilisé (non réutilisable)
  8. Audit 2FA_VERIFIED — méthode, IP, device, timestamp
  9. Retour client — tokens + profil complet + ID session → redirection dashboard

Gestion automatique du token (refresh)

  1. Détection expiration proche — si Access Token expire dans < 5 min → déclenchement refresh
  2. Envoi du Refresh Token au serveur
  3. Validation — signature JWT + non-expiré (< 7j) + non-révoqué (blacklist) + session active
  4. Génération nouveau Access Token (24h), conservation du Refresh Token
  5. Mise à jour stockage local — transparent pour l'utilisateur

Cas d'erreurs

Contexte Erreur Message affiché
Auth Email inexistant "Identifiants incorrects"
Auth Mot de passe incorrect "Identifiants incorrects"
Auth Compte non vérifié "Veuillez vérifier votre email"
Auth Compte bloqué "Votre compte a été suspendu"
2FA Code invalide "Code incorrect" (max 5 tentatives)
2FA Code expiré "Code expiré, demandez-en un nouveau"
2FA Session 2FA expirée Retour page connexion
2FA Trop de tentatives Blocage 15 minutes
Session Token expiré Tentative auto-refresh
Session Refresh Token expiré Déconnexion + redirection
Session Session révoquée Déconnexion immédiate
Session IP bloquée "Accès refusé depuis cette adresse"

Liens connexes