Authentification à deux facteurs (2FA)
Activer la 2FA TOTP avec Google Authenticator, Authy, 1Password ou Bitwarden.
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 :
| Application | Plateforme | Notes |
|---|---|---|
| Google Authenticator | iOS / Android | Le plus simple, gratuit |
| Authy | iOS / Android / Desktop | Sync multi-appareils chiffrée |
| 1Password | iOS / Android / Desktop / Web | Recommandé si déjà utilisé |
| Bitwarden | iOS / Android / Desktop / Web | Open source, gratuit |
| Microsoft Authenticator | iOS / Android | Pratique 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 :
- Ouvrez votre application authenticator
- Saisissez le code à 6 chiffres en cours
- 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.