В 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 недель. Стоимость рассчитывается индивидуально в зависимости от количества мини-программ и платформы. Получите консультацию по вашему проекту — свяжитесь с нами для оценки.







