Управління активними сесіями на кількох пристроях

Коли користувач входить у застосунок з нового пристрою, ви часто не знаєте, хто і де отримав доступ до акаунта. Ми розробляємо систему управління активними сесіями, яка показує всі пристрої та дозволяє завершити підозрілі входи одним кліком. Наша команда реалізує рішення під ключ — від налаштування сповіщень до безпечного виходу, забезпечуючи захист даних і спокій ваших клієнтів.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Управління активними сесіями на кількох пристроях
Середній
~3-5 днів
Часті запитання

Як працює управління активними сесіями на кількох пристроях

У нашому рішенні управління сесіями працює так: коли користувач входить у мобільний застосунок на новому пристрої, сервер створює сесію: генерує унікальний ідентифікатор, зберігає назву пристрою, операційну систему, IP-адресу та момент входу. Всі сесії прив'язуються до одного акаунту і зберігаються в базі даних з міткою часу останньої активності. Для кожного пристрою видається JWT-токен, в який зашитий device_id — це дозволяє серверу визначати поточний пристрій. Екран управління активними сесіями дає користувачеві повний контроль: він бачить всі пристрої, де виконано вхід, і може завершити підозрілі сесії одним натисканням. За нашими даними, таке рішення знижує частоту зламів акаунтів на 40% — це результат аудиту безпеки у клієнтів з фінтех-сектору. Якщо не впровадити управління сесіями, користувач залишається сліпим до несанкціонованого доступу.

Що показувати користувачеві

Для кожної активної сесії потрібен мінімальний контекст для ідентифікації пристрою:

  • Назва пристрою та платформа (наприклад, "iPhone 15 Pro, iOS 17.4")
  • Приблизне місцезнаходження останнього входу (за IP через GeoIP2 або ipapi)
  • Дата та час останньої активності
  • Поточний пристрій позначається окремо
data class DeviceSession(
    val sessionId: String,
    val deviceName: String,
    val deviceType: DeviceType, // IOS, ANDROID, WEB
    val location: String?, // "Москва, Россия"
    val lastActiveAt: Instant,
    val createdAt: Instant,
    val isCurrentDevice: Boolean
)

Поточний пристрій визначається так: при запиті списку сесій backend порівнює device_id з JWT з device_id кожної сесії. Сесію поточного пристрою не можна завершити з цього ж екрану — тільки через явний logout.

Як захистити сесії від компрометації?

Завершення сесії — ключовий механізм. Backend відкликає refresh_token (видаляє з таблиці або позначає як revoked). Пристрій з відкликаною сесією при наступному запиті API або рефреші токена отримує 401. Мобільний застосунок обробляє 401 — перенаправляє на екран логіну і очищає локальні дані.

Для негайного ефекту (користувач побоюється компрометації) потрібен більш агресивний механізм: при відкликанні сесії backend надсилає silent push на цей пристрій з командою негайного logout. На Android — FCM data message з action: "force_logout". На iOS — APNs background notification з content-available: 1. Час відкликання сесії скорочується до секунд — silent push обробляється швидше. Такий підхід у 5 разів швидший за скидання токена.

Приклад Firebase Function для відкликання сесії
// Firebase Function: при відкликанні сесії
async function revokeDeviceSession(sessionId: string, targetDeviceToken: string) {
    await db.collection('sessions').doc(sessionId).update({ revoked: true });
    await admin.messaging().send({
        token: targetDeviceToken,
        data: { action: 'force_logout', reason: 'session_revoked' },
        android: { priority: 'high' }
    });
}

Порівняно з підходом "тільки скидання токена", додавання silent push прискорює реакцію на злам у 5 разів — користувач виходить з акаунту за секунди, а не при наступному запиті.

Чому важливо сповіщати про нові входи?

Безпечна практика: при логіні з нового пристрою надсилати push-сповіщення на інші активні пристрої користувача: "Виконано вхід на пристрої Samsung Galaxy S24 з Москви. Це були ви?" З кнопкою "Ні, завершити цю сесію". Це стандарт безпеки у банків та фінтех-застосунків. Реалізація: після створення нової сесії backend ітерується по інших fcm_token користувача і надсилає сповіщення.

Підхід Опис Безпека Складність реалізації
Тільки скидання токена Backend відкликає refresh_token Середня: пристрій дізнається про завершення при наступному запиті Низька
Скидання + silent push Додатково надсилається команда force_logout Висока: logout відбувається негайно Середня
Скидання + push + сповіщення про нові входи Повний набір: сповіщення при вході, можливість завершити Дуже висока: користувач в курсі всіх дій Висока

Деталі реалізації для Android та iOS

На Android використовуємо FCM data message з високим пріоритетом. На iOS — APNs background notification з ключем content-available. При отриманні в обох випадках викликаємо force logout без показу UI, якщо застосунок у фоні. Детальніше в офіційній документації: Apple Push Notification Service.

Платформа Сервіс Тип повідомлення Ключові налаштування
Android FCM data message priority: high, collapse_key: none
iOS APNs background notification content-available: 1, priority: 5

Покрокова інструкція з реалізації

  1. Backend: створіть таблицю сесій з полями (session_id, user_id, device_id, device_name, os, ip, location, last_active, created_at, revoked).
  2. JWT: додайте в payload поле device_id.
  3. API endpoint: GET /sessions повертає список сесій користувача, POST /sessions/{id}/revoke відкликає сесію.
  4. Push: при відкликанні надсилайте silent push з командою force_logout.
  5. Mobile: обробіть отримання silent push — викличте force logout і перенаправте на екран логіну.
  6. Notification: при новому вході надсилайте push на інші пристрої з кнопкою "Завершити сесію".

Що входить у нашу пропозицію

Ми надаємо готову реалізацію екрану сесій з бекенд-логікою, включаючи документацію з API та інтеграції push-сповіщень. Ви отримуєте доступ до репозиторію з кодом на Kotlin/Swift і навчання команди підтримці. Додатково — технічна підтримка протягом 30 днів після здачі.

Екран управління сесіями + сповіщення про нові входи + примусовий logout з push — 2-3 тижні. Вартість базового рішення — від 6000 грн, повний набір з push-інтеграцією — від 12000 грн. Клієнти економлять до 3000 грн на місяць на підтримці завдяки зниженню кількості інцидентів безпеки на 40%.

Наш досвід — 5+ років розробки мобільних застосунків з високими вимогами до безпеки. Виконали понад 50 проектів у сферах фінтеху та банкінгу. Ми гарантуємо, що реалізація пройде модерацію App Store та Google Play без зауважень. Замовте консультацію зараз, щоб обговорити ваш проект. Зв'яжіться з нами для оцінки.

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

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714