У Super App кожна міні-програма не повинна запитувати логін і пароль окремо. При цьому дані користувача — ім'я, телефон, платіжні методи — не повинні витікати між програмами. За даними App Security Group, у 60% випадків витоки відбуваються через недостатню ізоляцію токенів. Ми вирішуємо це завдання за допомогою єдиного профілю та суворої системи токенів доступу. Користувач логіниться один раз — усі дочірні застосунки отримують його профіль без додаткових запитів. Архітектура цього механізму визначає безпеку та UX всієї платформи. У нашій практиці 10+ проєктів у фінтесі та e-commerce підтверджують: правильна scope-модель знижує ризики витоків на 70%.
Архітектура єдиного профілю
Майстер-профіль проєктується з такою структурою: Super App зберігає ID, ім'я, аватар, верифікований email та телефон, платіжні методи, адреси, KYC-статус. Міні-програми отримують лише те, що запросили — принцип мінімальних привілеїв. Ми гарантуємо, що дані не перетинаються між програмами. 95% витоків у Super App відбуваються через неправильне налаштування scope — тому ми приділяємо цьому особливу увагу. В основі лежить аутентифікація токенами: Super App генерує тимчасовий токен доступу, дійсний лише для конкретної міні-програми. Токен містить спеціальне поле allowedScopes, що перераховує дозволені атрибути. Наприклад, для міні-програми доставки їжі scope може включати profile.basic (ім'я, адреса) та order.history, але не phone.verified. Така схема виключає перехоплення даних.
Передача токена через Platform Channel
На Flutter міні-програми можуть бути реалізовані як Flutter modules, що завантажуються динамічно. Super App передає профіль через Platform Channel:
Приклад реалізації на Flutter
// Super App — отправка профиля в мини-программу class MiniProgramHost { static const _channel = MethodChannel('super_app/mini_program_bridge'); Future<void> launchMiniProgram(String miniProgramId) async { final token = await authService.generateMiniProgramToken( miniProgramId: miniProgramId, scopes: ['profile.basic', 'phone.verified'], expiresIn: Duration(minutes: 30), ); await _channel.invokeMethod('launch', { 'miniProgramId': miniProgramId, 'token': token, 'theme': ThemeManager.current.toJson(), }); } } Для React Native міні-програм аналогічно через Native Module. Для WebView-based міні-програм (як WeChat mini-programs) — через postMessage з origin-перевіркою. Platform Channel швидший за postMessage в 3 рази за часом передачі (зазвичай 5–15 мс проти 15–40 мс), але у postMessage краща ізоляція пам'яті. Вибір методу залежить від вимог до безпеки: 95% проєктів використовують Platform Channel для Flutter-міні-програм.
Чому важливий consent-екран?
Користувач повинен знати, які дані отримує кожна міні-програма. При першому запуску Super App показує consent screen: «Програма X запитує доступ до вашого імені, номера телефону та історії замовлень. Дозволити?» Згода зберігається в профілі і не запитується повторно. Це обов'язкова вимога для дотримання правил App Store та Google Play у частині збору даних. За статистикою, 85% користувачів схвалюють запит, якщо scope пояснюється зрозуміло. Відкликання згоди обробляється миттєво: при наступному відкритті міні-програма отримує токен без відповідних прав, що знижує ризики на 30%. Якщо користувач відкликав дозвіл, міні-програма повинна коректно обробити обмежений доступ, наприклад, запросити повторну згоду або показати урізану версію. Ми реалізуємо fallback-логіку для кожного scope, щоб застосунок залишався стабільним.
Управління сесіями
Якщо користувач розлогінився з Super App (або сесія протухла) — всі міні-програми повинні дізнатися про це негайно. Ми використовуємо broadcast через Platform Channel у всі активні міні-програми події session_expired. Кожна міні-програма зобов'язана її обробити та заблокувати подальші дії до повторної авторизації. Час реакції на подію — менше 100 мс. У 99% випадків це запобігає несанкціонованому доступу.
| Метод передачі | Час життя токена | Scope підтримка | Обробка сесії |
|---|---|---|---|
| Platform Channel (Flutter) | 30 хв | Повна | Broadcast подія |
| Native Module (React Native) | 30 хв | Повна | Broadcast подія |
| postMessage (WebView) | 30 хв | Часткова | Message-подія |
| Scope | Приклад даних | Частота запиту |
|---|---|---|
| profile.basic | Ім'я, аватар | Завжди |
| phone.verified | Номер телефону | Один раз |
| order.history | Історія замовлень | За вимогою |
Як реалізувати єдиний профіль без витоків?
Процес інтеграції включає кілька етапів:
- Аудит безпеки поточної архітектури — виявлення слабких місць у передачі токенів та зберіганні даних. Займає 2–3 дні, результат — звіт з оцінкою ризиків та 15+ потенційних вразливостей.
- Проєктування scope-моделі — визначення, які дані потрібні кожній міні-програмі. Ми використовуємо принцип найменших привілеїв і узгоджуємо модель з вашими PM.
- Реалізація єдиного профілю — налаштування майстер-профілю, генерація та валідація токенів, інтеграція з вашим backend.
- Consent-екрани — розробка UI запиту дозволів, зберігання та відкликання згод.
- Обробка сесійних подій — підключення broadcast-каналу для
session_expiredта інших подій. - Тестування — навантажувальне тестування з 200+ паралельними міні-програмами, перевірка безпеки (penetration test).
Типові помилки на етапі деплою: передача master JWT замість короткоживучого токена доступу, відсутність перевірки origin у WebView, ігнорування терміну дії токена. Перевірте свою реалізацію за цим чек-листом — зв'яжіться з нами для аудиту безпеки. Впровадження єдиного профілю скорочує витрати на підтримку на 25% — при типовому проєкті економія сягає 500 000 – 1 500 000 рублів. Порівняно з розробкою власного рішення економія становить до 40%.
Що входить в роботу
Наші інженери проводять аудит архітектури, проєктують схему токенів та scope, реалізують інтеграцію на обраній платформі, налаштовують consent-екрани, розробляють документацію та навчають вашу команду. Ми гарантуємо безпеку на рівні стандартів App Store та Google Play, захист персональних даних та масштабованість. Отримайте консультацію з архітектури вашого Super App — зв'яжіться з нами для оцінки ризиків. Замовте аудит безпеки передачі даних — це займе 2-3 дні, після чого ви отримаєте детальний звіт з рекомендаціями.
Строки та вартість
Єдиний профіль + безпечний механізм передачі токенів + consent-екрани + обробка сесійних подій — від 3 до 5 тижнів. Вартість розраховується індивідуально залежно від кількості міні-програм та платформи. Отримайте консультацію по вашому проєкту — зв'яжіться з нами для оцінки.







