Authentification à deux facteurs (2FA)

Activer la 2FA TOTP avec Google Authenticator, Authy, 1Password ou Bitwarden.

Mis à jour le 1 mai 2026

L'authentification à deux facteurs (2FA) ajoute une seconde couche de protection à votre compte PV-Express : même si votre mot de passe est compromis, un attaquant ne peut pas se connecter sans le code temporaire généré par votre application authenticator.

PV-Express implémente la 2FA au standard TOTP (Time-based One-Time Password, RFC 6238), compatible avec toutes les grandes applications du marché.

Statut par défaut

La 2FA est optionnelle et désactivée par défaut. Elle s'active depuis votre espace personnel, indépendamment du plan de votre cabinet. Aucun administrateur n'est requis pour l'activer ou la désactiver.

Elle est fortement recommandée pour les comptes ayant le rôle owner ou manager (voir Permissions et rôles), qui peuvent modifier la facturation, inviter des membres et accéder aux dossiers de tous les clients du cabinet.

Applications authenticator compatibles

Toute application TOTP standard fonctionne. Les plus utilisées :

ApplicationPlateformeNotes
Google AuthenticatoriOS / AndroidLe plus simple, gratuit
AuthyiOS / Android / DesktopSync multi-appareils chiffrée
1PasswordiOS / Android / Desktop / WebRecommandé si déjà utilisé
BitwardeniOS / Android / Desktop / WebOpen source, gratuit
Microsoft AuthenticatoriOS / AndroidPratique en environnement MS365

Activation : le wizard d'enrôlement

Depuis Settings → Mon compte → 2FA, cliquez sur Activer la 2FA. Le wizard se déroule en trois étapes :

1. Scanner le QR code

PV-Express génère un secret unique pour votre compte et l'affiche sous forme de QR code. Ouvrez votre application authenticator et scannez-le.

Si vous ne pouvez pas scanner (authenticator desktop, écran cassé, etc.), cliquez sur Saisir manuellement pour afficher la clé secrète en base32. Recopiez-la dans votre app avec le label PV-Express (votre email).

2. Saisir le code à 6 chiffres

Votre application affiche immédiatement un code à 6 chiffres qui change toutes les 30 secondes. Saisissez-le dans le champ pour confirmer que l'enrôlement a bien fonctionné.

Si le code est refusé : vérifiez que l'horloge de votre téléphone est synchronisée (le décalage maximum toléré est de ±30 secondes).

3. 2FA activée

Le statut bascule sur 2FA active dans Settings. Une entrée mfa.enroll est ajoutée à l'audit log.

Connexion avec 2FA active

À chaque connexion, après la saisie email + mot de passe, vous êtes redirigé vers /login/2fa :

  1. Ouvrez votre application authenticator
  2. Saisissez le code à 6 chiffres en cours
  3. Validez

La session est ensuite ouverte normalement. Le code n'est demandé qu'à la connexion : la navigation à l'intérieur de l'application reste fluide tant que la session est active.

Désactivation

Depuis Settings → Mon compte → 2FA, cliquez sur Désactiver la 2FA. PV-Express vous demande de saisir un dernier code valide pour confirmer que vous êtes bien le propriétaire de l'authenticator (pas un attaquant qui aurait accédé à une session ouverte).

Une entrée mfa.disable est ajoutée à l'audit log.

Pas de codes de récupération

Cette première version n'inclut pas de recovery codes. Si vous perdez votre téléphone et que vous n'avez pas configuré l'app sur un second appareil :

  • Si vous êtes owner du cabinet : contactez le support PV-Express ([email protected]). Après vérification d'identité, un super-admin désactive votre 2FA manuellement (action tracée dans l'audit log).
  • Si vous êtes manager ou collaborator : l'owner du cabinet peut réinitialiser votre 2FA depuis la fiche membre dans Cabinet → Membres et équipe.

Les recovery codes seront ajoutés dans une version ultérieure. En attendant, la bonne pratique est de configurer l'authenticator sur deux appareils (par exemple téléphone perso + 1Password desktop) au moment de l'enrôlement.

Sécurité du secret TOTP

  • Le secret TOTP est généré côté serveur avec crypto.randomBytes(20), encodé en base32 (160 bits d'entropie).
  • Il est stocké chiffré en base avec la clé MFA_ENCRYPTION_KEY (AES-256-GCM, voir DPA).
  • Le QR code et la clé en clair ne sont affichés qu'une seule fois, pendant le wizard d'enrôlement. Impossible de les récupérer après validation.
  • Les tentatives échouées sont rate-limitées : 5 essais/minute par utilisateur, puis blocage temporaire de 15 minutes.