Встречается на собеседованиях • сегодня
Как спроектировать двухфакторную авторизацию
Для реализации двухфакторной авторизации (2FA) можно использовать комбинацию пароля и одноразового кода (OTP), отправляемого по SMS, email или генерируемого в приложении (Google Authenticator, Authy).
Основные шаги:
- Базовая аутентификация – пользователь вводит логин/пароль.
- Генерация OTP – после успешного входа сервер генерирует код и отправляет его пользователю.
- Валидация OTP – пользователь вводит код, сервер проверяет его и завершает вход.
Пример кода (Node.js + JWT + Speakeasy для OTP):
javascript
const speakeasy = require('speakeasy');
// Генерация секрета для пользователя
const secret = speakeasy.generateSecret({ length: 20 });
// Сохраняем `secret.base32` в БД
// Проверка OTP
const verified = speakeasy.totp.verify({
secret: userStoredSecret,
encoding: 'base32',
token: userEnteredCode,
window: 1 // допустимое отклонение (1-2 шага)
});
if (verified) { /* доступ разрешен */ }Дополнительно:
- Используйте библиотеки типа
otplibилиnode-2fa. - Для SMS/email можно подключить сервисы (Twilio, SendGrid).
- Рекомендуется backup-коды на случай потери доступа.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы