Как установить 2FA на почту

DarkBuffer

⚡ Contributor
ACTIVE NODE
INITIATED
Двухфакторная аутентификация — это реализация механизма TOTP (Time-based One-Time Password, RFC 6238). По сути, сервер и клиент договариваются об общем секрете и генерируют коды на основе текущего времени. Даже если злоумышленник получит пароль, без TOTP-кода он не пройдёт.

Шаг 1. Зайдите в настройки безопасности

Логинитесь в веб-интерфейс почты (API-методы для включения 2FA обычно заблокированы). Найдите секцию "Security" или "Two-factor authentication". Эндпоинт типа /settings/security/2fa/enable.

Шаг 2. Инициализация

Сервер генерирует секретный ключ (base32 encoded, обычно 16-32 символов) и отдаёт его в виде QR-кода. По сути, это строка формата:
Код:
otpauth://totp/Provider:username?secret=JBSWY3DPEHPK3PXP&issuer=Provider

Секрет хранится у сервера в БД, привязанный к вашему аккаунту. Без него генерация кодов невозможна.

Шаг 3. Клиентская часть

Установите любой аутентификатор (Google Authenticator, Aegis, 2FAS). Это просто реализация TOTP-алгоритма:


Код:
TOTP(K) = truncate(HMAC-SHA1(K, floor(time/30)))
Где K — общий секрет, time — Unix timestamp. Код меняется каждые 30 секунд.

Отсканируйте QR-код или вставьте секрет вручную. Приложение сохранит секрет локально и начнёт генерировать 6-значные коды.

Шаг 4. Верификация

Сервер просит ввести текущий код. Вы берёте его из приложения, отправляете на бэкенд. Сервер вычисляет ожидаемый код по тому же алгоритму. Если совпало — подтверждает включение 2FA и сохраняет флаг в БД.

После этого сервер генерирует резервные коды (обычно 8-10 штук). Это одноразовые токены, которые хешируются и хранятся в БД как fallback-механизм на случай потери доступа к TOTP-приложению.

Шаг 5. Последствия

С этого момента при логине workflow меняется:


Код:
1. POST /auth/login { username, password }
2. Сервер валидирует пароль. Если 2FA включена — возвращает 401 с header X-Require-2FA.
3. POST /auth/verify-2fa { username, totp_code или backup_code }
4. Сервер проверяет код, выдаёт access_token.
Важные нюансы для интеграции

Почтовые клиенты (SMTP/IMAP)


Твой обычный пароль перестаёт работать, потому что протоколы SMTP/IMAP не поддерживают TOTP. Решение: генеришь App Password — отдельный токен с ограниченными правами. Сервер создаёт случайную строку, сохраняет её хеш в БД, помечает как app_password для IMAP/SMTP.

Утеря телефона

Резервные коды — твои спасательные круги. Если потерял и коды, и доступ к TOTP — считай, аккаунт похоронил. Восстановление через саппорт возможно, но геморройно.

На каких провайдерах работает

Все крупные почтовики поддерживают TOTP: Gmail (на базе Google Identity), Yandex, Mail.ru, Outlook (Microsoft Entra ID), ProtonMail. Обычно можно ещё U2F/WebAuthn подключить, но это уже другая история.

Итог

2FA превращает твой аккаунт из однофакторной схемы в двухфакторную: something you know (пароль) + something you have (устройство с секретом). Взломать можно только если украдут оба фактора. Математически TOTP взломать нельзя — только брутфорс с перебором 10^6 комбинаций, но сервер банит после нескольких неудач.
 
Верх