Во-первых, я бы не советовал разрешать пользователям входить только с кодом 2FA. В конце концов, это фактор секунда ; Большую часть времени он будет содержать меньше энтропии, чем пароль пользователя.
Я бы порекомендовал использовать одноразовые пароли на основе времени (TOTP) с Google Authenticator в качестве клиентского приложения для управления токенами. Легко интегрировать в Rails с Active Model OTP Gem .
Отправка одноразовых кодов по электронной почте или SMS - не лучший способ. SMS 'могут быть украдены через подделку номера телефона и коды электронной почты нарушают 2fa, если злоумышленник контролирует адрес электронной почты пользователя, который также может выполнить сброс пароля, что делает его универсальным магазином для взятия учетных записей.
Если вы хотите использовать настоящий уровень техники, взгляните на U2F , основанный на криптографии c подписи.
При интеграции с Clearance
Обязательно проверяйте токен 2FA только после , когда вы проверяете их имя пользователя и пароль, особенно если вы используете TOTP.