diff --git a/Command/Tfa.php b/Command/TfaDisable.php similarity index 98% rename from Command/Tfa.php rename to Command/TfaDisable.php index 4ad8aa9..4b86cbd 100644 --- a/Command/Tfa.php +++ b/Command/TfaDisable.php @@ -27,7 +27,7 @@ use Symfony\Component\Console\Output\OutputInterface; use MSP\TwoFactorAuth\Api\TfaInterface; -class Tfa extends Command +class TfaDisable extends Command { /** * @var ConfigInterface diff --git a/Command/TfaReset.php b/Command/TfaReset.php new file mode 100644 index 0000000..f7a7c7c --- /dev/null +++ b/Command/TfaReset.php @@ -0,0 +1,85 @@ +userConfigManager = $userConfigManager; + $this->user = $user; + $this->userFactory = $userFactory; + } + + protected function configure() + { + $this->setName('msp:security:tfa:reset'); + $this->setDescription('Reset configuration for one user'); + + $this->addArgument('user', InputArgument::REQUIRED, __('Username')); + $this->addArgument('provider', InputArgument::REQUIRED, __('Provider code (google, authy, u2fkey)')); + + parent::configure(); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $userName = $input->getArgument('user'); + $provider = $input->getArgument('provider'); + + $user = $this->userFactory->create(); + + $this->user->load($user, $userName, 'username'); + if (!$user->getId()) { + throw new LocalizedException(__('Unknown user %1', $userName)); + } + + $this->userConfigManager->resetProviderConfig($user, $provider); + } +} diff --git a/README.md b/README.md index efd44e9..341566f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MSP TwoFactorAuth +MSP TwoFactorAuth Two Factor Authentication module for maximum **backend access protection** in Magento 2. @@ -8,6 +8,27 @@ Two Factor Authentication module for maximum **backend access protection** in Ma Did you lock yourself out from Magento backend? click here. +## Main features: + +* Providers: + * Google authenticator + * QR code enroll + * Authy + * SMS + * Call + * Token + * One touch + * U2F keys (Yubico and others) + * Duo Security + * SMS + * Push notification +* Trusted devices + * High security rolling codes +* Trusted devices revoke list +* Central security suite events logging +* Per user configuration +* Forced global 2FA configuration + ## Installing on Magento2: **1. Install using composer** @@ -24,23 +45,27 @@ Enable from **Store > Config > SecuritySuite > Two Factor Authentication**. **3. Enable two factor authentication for your user** -You can select between a set of different 2FA providers. +You can select between a set of different 2FA providers. **Multiple concurrent providers** are supported. -**4. Google Authenticator example** +**4. Subscribe / Configure your 2FA provider(s):** + +**4.1 Google Authenticator example** + + -**4.1. Scan the QR code with your Two Factor Authentication application** +**4.2. Duo Security example** - + -**4.2. Login and type a valid two factor authentication code** +**4.3. U2F key (Yubico and others) example** - + -**5. Duo Security example** +**4.4. Authy example** - + ## Emergency commandline disable: @@ -48,4 +73,14 @@ If you messed up with two factor authentication you can disable it from command- `php bin/magento msp:security:tfa:disable` +If you need to manually reset one single user configuration (so you can restart configuration / subscription), type: + +`php bin/magento msp:security:tfa:reset ` + +e.g.: + +`php bin/magento msp:security:tfa:reset admin google` +`php bin/magento msp:security:tfa:reset admin u2fkey` +`php bin/magento msp:security:tfa:reset admin authy` + This will disable two factor auth globally. diff --git a/etc/di.xml b/etc/di.xml index bbaf4aa..0a52e80 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -31,7 +31,8 @@ - MSP\TwoFactorAuth\Command\Tfa + MSP\TwoFactorAuth\Command\TfaDisable + MSP\TwoFactorAuth\Command\TfaReset diff --git a/screenshots/token.png b/screenshots/google_qr.png similarity index 100% rename from screenshots/token.png rename to screenshots/google_qr.png