Розробка двофакторної автентифікації (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 — близько тижня.

Зв'яжіться з нами — обговоримо деталі та підготуємо пропозицію під ключ. Отримайте консультацію та переконайтеся в якості наших рішень.