Customer Two-Factor Authentication: la 2FA per i clienti su Mage-OS
Ho rilasciato un nuovo modulo open source per Mage-OS: Customer Two-Factor Authentication, disponibile su Mage-OS Lab.
Magento 2 include già il modulo Magento_TwoFactorAuth, che però protegge solo il pannello di amministrazione. Per i clienti dello storefront non c’era una soluzione nativa. Questo modulo colma il vuoto aggiungendo l’autenticazione a due fattori TOTP (RFC 6238) per gli account cliente, compatibile con le comuni app di autenticazione.
Come funziona
La 2FA è opzionale e su base volontaria: ogni cliente può attivarla o disattivarla dalla propria dashboard in My Account, dove può anche rigenerare i codici di recupero.
Una volta attiva, il codice viene richiesto nel login standard, nel popup di autenticazione di Luma e in OneStepCheckout.
Funzionalità principali
- QR code generato lato server in formato SVG: il secret non viene mai inviato a servizi di terze parti
- Codici di recupero salvati come hash SHA-256, con possibilità di copiarli o scaricarli
- Architettura fail-closed, per impedire l’accesso tramite percorsi di login alternativi
- Protezione dal replay, con tolleranza di clock e numero massimo di tentativi configurabili
- Secret salvato in forma cifrata
- Password obbligatoria per disattivare la 2FA
- Reset della 2FA da admin e tramite comando CLI
- Template compatibili con Hyvä
- Traduzioni en_US e it_IT
Installazione
composer require mage-os/module-login-two-factor-auth
bin/magento module:enable MageOS_LoginTwoFactorAuth
bin/magento setup:upgrade
bin/magento config:set customer_2fa/general/enabled 1Configurazione
Le opzioni si trovano in Stores → Configuration → Customers → Two-Factor Authentication:
- enabled: attiva la funzionalità (scope website)
- issuer: etichetta mostrata nell’app di autenticazione
- leeway: finestre temporali accettate (da 0 a 2, default 1)
- max_attempts: tentativi falliti prima di richiedere di nuovo la password
- recovery_codes: numero di codici di recupero generati (default 10)
Limitazioni attuali
I token GraphQL generateCustomerToken e REST non sono ancora sottoposti alla verifica 2FA. Al momento non sono implementati il riconoscimento dei dispositivi e le notifiche email.
Licenza e contributi
Il modulo è rilasciato con licenza MIT. Il codice è disponibile su GitHub: mage-os-lab/module-customer-two-factor-auth.
Feedback, segnalazioni e contributi sono benvenuti.