feat(security): retire le MFA local, le code d'accès est celui du serveur (v0.8.1)

La v0.8.0 laissait cohabiter deux vérifications du code à 6 chiffres : la
fenêtre MFA locale, qui contrôlait un code contre un secret détenu par le
poste lui-même — et ne verrouillait donc que sa propre interface — puis la
validation par le serveur, seule à décider de l'accès réseau. L'ancienne
disparaît, avec le secret TOTP qu'elle stockait en clair dans config.json
(effacé au premier lancement) et l'onglet MFA du panneau Administrateur.

La saisie passe par une fenêtre dédiée qui relaie le refus exact du serveur
et laisse réessayer, la requête partant dans un thread pour qu'un serveur
muet ne fige pas l'application. Une ligne « Accès distant » distingue
désormais l'état de l'autorisation de celui du tunnel : monté sans code
validé, celui-ci ne mène nulle part.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-06 13:06:17 +02:00
co-authored by Claude Opus 5
parent dab6c1548b
commit cc9f521a95
15 changed files with 296 additions and 345 deletions
+4 -3
View File
@@ -24,7 +24,7 @@ else:
)
APP_NAME = "WGSecure"
TAGLINE = "Client WireGuard avec surcouche MFA TOTP, pour Linux et Windows"
TAGLINE = "Client WireGuard à accès authentifié par le serveur, pour Linux et Windows"
VERSION = __version__
LICENSE = "Usage personnel"
REPO_URL = "https://git.tuxtech.fr/tuxgyver/WGSecure"
@@ -62,7 +62,8 @@ FEATURES = [
(
"Mode Admin protégé",
"Configuration complète (serveur, DNS, IP, keepalive, MTU) derrière "
"un mot de passe et, en option, une double authentification TOTP.",
"un mot de passe, et l'accès aux ressources distantes par un code "
"à 6 chiffres validé par le serveur.",
),
(
"Diagnostic réseau",
@@ -110,7 +111,7 @@ GUARANTEES = [
TECH_STACK = [
("Interface", "PyQt6"),
("Cryptographie", "cryptography (X25519, ChaCha20-Poly1305, bcrypt)"),
("MFA", "pyotp (TOTP) + qrcode/Pillow pour le QR code"),
("QR Code", "qrcode/Pillow pour l'export de la config client"),
("Tunnel", "wg-quick / wg (Linux), WireGuard for Windows"),
("Élévation de privilèges", "sudo NOPASSWD ciblé, repli askpass puis pkexec"),
("Empaquetage", "PyInstaller (Linux/Windows) + Inno Setup (installeur Windows)"),