Я пытаюсь понять, как работает процесс Двухфакторная аутентификация Google, чтобы внедрить его на свой сайт. Насколько я понимаю, в этом процессе есть две разные части
- Пользователь на моем сайте включил двухфакторную аутентификацию, которая создала связь между моим пользователем и приложением. Это одноразовый шаг и не происходит при каждой попытке входа в систему.
- Каждый раз, когда пользователь входит в систему, ему нужно будет предоставить шестизначный код из приложения Google Authenticator.
Теперь следующий код сгенерирует QR-изображение и код установки, чтобы включить 2FA и связать учетную запись с Google Authenticate.
TwoFactorAuthenticator tfa = new TwoFactorAuthenticator();
string accountSecretKey = Guid.NewGuid();
var setupInfo = tfa.GenerateSetupCode("Dotnet Awesome", login.Username, accountSecretKey, 300, 300);
ViewBag.BarcodeImageUrl = setupInfo.QrCodeSetupImageUrl;
ViewBag.SetupCode = setupInfo.ManualEntryKey;
Теперь при каждом запросе я бы аутентифицировал пользователя, используя следующий код
TwoFactorAuthenticator tfa = new TwoFactorAuthenticator();
tfa.ValidateTwoFactorPIN(accountSecretKey, "Six Digit Code");
Вопрос
В приведенном выше коде будет ли код accountSecretKey
что-то, что мне нужно будет сохранить в моей базе данных, чтобы я мог передавать его каждый раз, когда я хочу проверить? Или accountSecretKey
что-то, что мне придется создавать заново при каждой попытке входа в систему? Если этот код я буду хранить в своей базе данных, должен ли он также быть зашифрован как пароль?