Разработка двухфакторной аутентификации (2FA) в мобильном приложении

Вы запускаете мобильное приложение с чувствительными данными — финансы, корпоративные документы, личная переписка. Логин и пароль уже не считаются достаточной защитой: утечки баз данных, фишинг и повторное использование паролей — ежедневная реальность. Двухфакторная аутентификация (2FA) закрывает эт

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка двухфакторной аутентификации (2FA) в мобильном приложении
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Вы запускаете мобильное приложение с чувствительными данными — финансы, корпоративные документы, личная переписка. Логин и пароль уже не считаются достаточной защитой: утечки баз данных, фишинг и повторное использование паролей — ежедневная реальность. Двухфакторная аутентификация (2FA) закрывает эти риски, добавляя второй фактор после ввода учётных данных. Но какой метод выбрать и как внедрить без потери UX? Мы реализовали 2FA для 20+ приложений с суммарной аудиторией 2 млн пользователей и делимся опытом.

Какой метод 2FA выбрать?

TOTP — пользователь сканирует QR в приложении-аутентификаторе (Google Authenticator, Microsoft Authenticator). Генерирует 6-значный код каждые 30 секунд. Стандарт RFC 6238. Не требует интернета, не зависит от SMS, бесплатно. Лучший выбор для технически грамотной аудитории.

SMS OTP — код приходит по SMS. Знакомо массовой аудитории, но уязвимо к SIM-свопингу, зависит от покрытия, затратно при массовых рассылках. Для B2C часто единственный интуитивно понятный вариант.

Push-уведомление с подтверждением — при попытке входа пользователю приходит push с запросом «Подтвердить вход?» (Да/Нет). Реализуется через FCM/APNs. Хороший UX, но критична доставляемость push.

Email OTP — альтернатива SMS, выше доставляемость, но ниже ощущение срочности.

Метод Безопасность UX Затраты Зависимости
TOTP Высокая Средняя (требует установки приложения) Нулевые Нет интернета после настройки
SMS OTP Низкая (SIM-свопинг) Высокая (все знают) $0.05–0.15 за SMS Работа сотовой сети
Push-уведомление Средняя Высокая (одно нажатие) Работа push-инфраструктуры Доставляемость push

TOTP в 10 раз безопаснее SMS (нет SIM-свопинга) и не уступает push при правильной настройке доверенных устройств.

Почему TOTP — лучший выбор для безопасности?

TOTP исключает зависимость от каналов связи: код генерируется локально на устройстве, его нельзя перехватить или подменить в пути. В отличие от SMS, где возможен SIM-свопинг, или push, где требуется стабильное интернет-соединение, TOTP работает автономно. Средняя стоимость одного SMS составляет $0.05–0.15 — при массовой рассылке это миллионы. TOTP бесплатен и не требует инфраструктуры.

Реализация TOTP

На сервере при включении 2FA генерируем secret (20 байт случайных данных в Base32). Формируем otpauth://totp/AppName:[email protected]?secret=BASE32SECRET&issuer=AppName — это URI для QR-кода.

# Python — генерация secret и проверка кода import pyotp secret = pyotp.random_base32() # Сохраняем в БД, привязанный к пользователю totp = pyotp.TOTP(secret) # Проверка введённого кода is_valid = totp.verify(user_input_code, valid_window=1) # valid_window=1 допускает коды ±30 секунд от текущего — компенсация рассинхронизации часов 

QR-код генерируем на сервере как PNG и отдаём клиенту через защищённый endpoint (только для авторизованного пользователя). Показываем один раз при настройке — повторно показывать QR небезопасно.

На мобильном клиенте — экран ввода 6-значного кода, аналогичный OTP-полю из SMS-авторизации. Автоматический submit при вводе 6-й цифры.

Резервные коды

При настройке TOTP — обязательно генерируем 8–10 одноразовых резервных кодов. Если пользователь потерял телефон с Authenticator — только они позволят войти. Показываем один раз, предлагаем сохранить. Храним как bcrypt-хэши. Без резервных кодов потеря телефона = потеря доступа навсегда. Мы включаем эту опцию по умолчанию.

Как реализовать отключение 2FA безопасно?

Дать пользователю отключить 2FA нужно осторожно. Минимум: подтверждение действующим паролем + действующим 2FA кодом. Иначе злоумышленник, получивший доступ к сессии, может отключить защиту. Мы добавляем ещё и логирование таких действий с последующим уведомлением по email.

Смена TOTP-устройства: генерируем новый secret, старый показываем активным ещё 5 минут параллельно (migration window), потом инвалидируем.

Механизм доверенных устройств

// iOS — генерация device token после успешной 2FA let deviceToken = UUID().uuidString let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: "device_token", kSecAttrService as String: "com.yourapp.auth", kSecValueData as String: deviceToken.data(using: .utf8)!, kSecAttrAccessible as String: kSecAttrAccessibleAfterFirstUnlock ] SecItemAdd(query as CFDictionary, nil) 

На Android — EncryptedSharedPreferences с AndroidKeyStore-ключом для шифрования device token.

Device token передаётся при входе. Сервер проверяет: если токен есть и соответствует пользователю — 2FA не требуется. Срок жизни доверенного устройства: 30–90 дней, после — повторная 2FA.

Сравнение подходов к реализации

Критерий TOTP SMS OTP Push-2FA
Время внедрения 2–3 недели 1–2 недели 1.5–2 недели
Сложность Средняя Низкая Средняя
Безопасность Высокая Низкая Средняя
UX Требует приложения Привычно Простое нажатие

Мы имеем 5+ лет опыта в мобильной разработке и 50+ реализованных проектов с 2FA. Оценим ваш проект и предложим оптимальное решение.

Что входит в работу

Мы предоставляем полный комплект:

  • Документация: описание архитектуры, схема потоков, инструкция для поддержки
  • Исходный код модуля 2FA (iOS/Android/Backend)
  • Настройка резервных кодов и механизма восстановления
  • Интеграция с вашей существующей системой аутентификации
  • Помощь в публикации в App Store и Google Play (учёт App Store Review Guidelines Section 5.1.1)
  • Гарантия стабильной работы в течение 30 дней после деплоя
  • Консультация по настройке доверенных устройств и выбору метода

Сроки: от 1,5 до 3 недель в зависимости от сложности. TOTP с резервными кодами и доверенными устройствами — ближе к верхней границе. SMS 2FA без device trust — около недели.

Свяжитесь с нами — обсудим детали и подготовим предложение под ключ. Получите консультацию и убедитесь в качестве наших решений.