Когда пользователь видит код в Google Authenticator, но сайт его не принимает, вход блокируется даже при правильном пароле.

В чем проблема

TOTP зависит от общего secret и точного времени. Ошибка появляется при рассинхронизации времени, неверном secret, повторной привязке 2FA, слишком строгом окне проверки или ошибке алгоритма.

Что проверяю

  • Синхронизировано ли время сервера.
  • Совпадает ли secret у пользователя и сайта.
  • Какое окно допустимого дрейфа времени.
  • Не привязан ли новый QR поверх старого.
  • Есть ли резервные коды и безопасный сброс.

Как исправляю

Я проверяю 2FA без ослабления безопасности: время, secret, алгоритм и процедуру восстановления доступа.

  • Проверяю время сервера и timezone.
  • Сверяю настройки TOTP.
  • Добавляю допустимое окно соседних интервалов.
  • Исправляю повторную привязку 2FA.
  • Настраиваю безопасный сброс через администратора или backup codes.

Что получает заказчик

  • Коды 2FA принимаются корректно.
  • Пользователь может восстановить доступ безопасно.
  • Система не принимает устаревшие или чужие коды.
  • Администратор понимает причину отказа.

Что нужно для старта

  • Описание системы авторизации.
  • Логи неудачного входа.
  • Доступ к серверу.
  • Информацию, когда подключали 2FA.

Вопросы и ответы

Можно ли отключить 2FA пользователю?

Можно только через безопасную процедуру, чтобы не открыть доступ злоумышленнику.

Почему время так важно?

TOTP-код действителен только короткий интервал, обычно около 30 секунд.

Нужна похожая задача?

Напишите, что именно сломалось или что нужно запустить. Я разберу симптомы, проверю техническую причину и предложу понятный план работ с адекватными сроками.