Встречается на собеседованиях • сегодня

Как спроектировать двухфакторную авторизацию

Для реализации двухфакторной авторизации (2FA) можно использовать комбинацию пароля и одноразового кода (OTP), отправляемого по SMS, email или генерируемого в приложении (Google Authenticator, Authy).

Основные шаги:

  1. Базовая аутентификация – пользователь вводит логин/пароль.
  2. Генерация OTP – после успешного входа сервер генерирует код и отправляет его пользователю.
  3. Валидация 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-коды на случай потери доступа.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы