2FAuth

Cinq écrans mobiles sombres : liste de comptes, code à six chiffres, scan d'un QR code, sélection de comptes et réglages.

Les secrets 2FA dans une base à soi, les codes dans le navigateur

2FAuth est une application web PHP, construite sur Laravel, qui garde les comptes à double authentification dans une base de données de votre serveur et en calcule les codes TOTP, HOTP et Steam Guard dans un onglet du navigateur. Son README la présente comme une alternative auto-hébergée aux générateurs d'OTP comme Google Authenticator, pensée autant pour le téléphone que pour l'ordinateur. Une démo publique, remise à zéro toutes les heures, se visite avant toute installation.

Imports depuis Aegis ou 2FAS, partage sans exposer le secret

  • Codes conformes aux RFC 4226 (HOTP) et 6238 (TOTP), calculés par la bibliothèque OTPHP de Spomky-Labs, et codes Steam Guard.
  • Ajout d'un compte par scan ou image d'un QR code, ou par un formulaire avancé ; un compte importé reste modifiable.
  • Import des exports de Google Authenticator (QR code), Aegis, 2FAS, Bitwarden et, depuis la v9.0.0, Ente Auth ; export en JSON.
  • Depuis la v7, partage d'un compte avec d'autres utilisateurs de l'instance : le destinataire génère des codes sans voir le secret ni le QR code, et un journal note qui a demandé un code et quand, sans conserver le code.
  • Connexion par mot de passe, clé WebAuthn (YubiKey, Titan), SSO OpenID ou GitHub, ou derrière un proxy d'authentification.
  • Verrouillage après inactivité ou dès qu'un code est copié, et codes affichables en points contre les regards par-dessus l'épaule.
  • Interface entièrement traduite en français.
  • Extensions Firefox, Chrome et Edge qui lisent les codes sur le serveur et capturent le QR code de la page ouverte, et une API documentée.

Un code sans sortir le téléphone, un accès révocable pour l'équipe

  • Lire un code au bureau, dans le navigateur ou l'extension, sans aller chercher son téléphone.
  • Garder ses comptes 2FA dans une base que l'on sauvegarde soi-même, à l'abri de la perte d'un téléphone.
  • Ouvrir à une équipe les codes d'un compte fournisseur commun, puis retirer l'accès sans changer le secret.
  • Gérer la double authentification d'un proche qui s'y perd, exemple donné par la documentation du partage.

Une clé APP_KEY irremplaçable et quatre versions majeures en 2026

Le projet vise l'usage personnel et les petites équipes. Le site de documentation présente 2FAuth comme un gestionnaire d'OTP pour particuliers et équipes. Il recommande SQLite pour un utilisateur seul ou quelques utilisateurs, et une base SQL serveur au-delà. Le partage, désactivé par défaut, ne fonctionne qu'entre comptes inscrits sur la même instance.

Perdre la clé APP_KEY rend les secrets chiffrés inutilisables. Le chiffrement des secrets en base, désactivé par défaut, prend pour clé la variable d'environnement APP_KEY. La documentation est nette : sans cette clé, aucun code ne peut plus être généré, et il n'existe aucun contournement.

Le proxy d'authentification doit être le seul accès à l'instance. En mode proxy, 2FAuth ouvre la session de l'utilisateur nommé dans l'en-tête REMOTE_USER et vérifie seulement que cet en-tête est présent. La documentation exige donc que l'instance ne soit joignable qu'à travers le proxy, déclaré dans TRUSTED_PROXIES depuis la v8, et cite le portail Authelia parmi les serveurs à placer devant. Ce mode exclut WebAuthn et les jetons d'accès personnels, or l'extension navigateur se lie au compte par un tel jeton.

Quatre versions majeures sont sorties en 2026. La v9.0.0 date du 27 octobre 2026, après la v6 en janvier, la v7 en juin et la v8 en juillet. Plusieurs sauts ont demandé une intervention : la v8 a invalidé les jetons d'accès personnels en passant à une nouvelle version de Laravel, la v6 a retiré la valeur par défaut de APP_KEY de l'image Docker et abandonné PHP 8.3. Une installation sans Docker exige PHP 8.4 et Composer.