Реализация пользовательских вкладок Android для входа через портал авторизации.

Вкладки Android Custom Tabs обеспечивают полнофункциональный, безопасный и удобный интерфейс браузера непосредственно в процессе авторизации в сети, например, в аэропортах, отелях и самолетах. Интегрируя основной браузер пользователя в процесс аутентификации, Custom Tabs предоставляют расширенные возможности, включая автозаполнение учетных данных и платежей в одно касание, потоковую передачу с защитой DRM и стабильное подключение для пользователей с функциями безопасности, такими как VPN и частный DNS. Для получения дополнительной информации о Custom Tabs см. раздел «Обзор Android Custom Tabs» .

Преимущества по сравнению с устаревшим WebView

Интеграция основного браузера пользователя с помощью пользовательских вкладок устраняет ряд функциональных ограничений, присущих устаревшим методам аутентификации на основе WebView для сетевых операторов:

  • Упрощенные транзакции: интерфейс поддерживает автоматическое заполнение учетных данных и сохраненной платежной информации одним касанием, что сокращает ручной ввод данных в процессе входа в систему. (См. Рисунок 1.)
  • Совместимость с медиаконтентом: Платформа поддерживает контент, защищенный DRM (например, Widevine), что позволяет воспроизводить зашифрованные видеопотоки непосредственно на портале. (См. Рисунок 2.)
  • Поддержка настроек безопасности: Пользовательские вкладки сохраняют функциональность портала для устройств, использующих VPN или частный DNS, — функции безопасности, которые часто приводят к сбоям стандартных перенаправлений браузера.
  • Единообразие интерфейса: Пользовательские вкладки интегрируются непосредственно с системным браузером, предоставляя те же функциональные инструменты и элементы пользовательского интерфейса, что и в полноценной сессии браузера.
  • Фоновое сохранение состояния: портал продолжает работать в фоновом режиме, выступая в качестве постоянной точки доступа на протяжении всего периода подключения.

Ручной ввод и автозаполнение через портал авторизации

Рисунок 1. Ручной ввод (WebView) и автозаполнение (Custom Tabs).

Видео с портала авторизации воспроизведение

Рисунок 2. Отсутствие видео (WebView) и воспроизведение видео (пользовательские вкладки).

Обнаружение пользовательских вкладок и процесс подключения

В то время как пользовательские вкладки обеспечивают интерфейс, API портала авторизации управляет потоком от обнаружения до получения информации о подключении :

  1. Обнаружение: Сеть объявляет о поддержке своего API, используя параметр DHCP 114.
  2. Взаимодействие: Устройство Android отправляет запрос к конечной точке API для получения JSON-данных, содержащих информацию о состоянии сети.
  3. Подключение: Если в JSON-ответе указано использование пользовательских вкладок, система открывает портал в высокопроизводительной среде браузера, а не в обычном системном окне.

API Captive Portal позволяет устройствам Android определять наличие портала авторизации с помощью captive поля. API интегрирует другие поля, такие как venue-info-url и seconds-remaining в пользовательский интерфейс системы Android.

Обнаружение портала авторизации для установления соединения поток

Рисунок 3. Схема установления соединения через API портала авторизации.

Включить пользовательские вкладки Android

Для поддержки процесса создания пользовательских вкладок сетевым операторам необходимо внедрить API портала авторизации и активировать его через конфигурацию в формате JSON.

Требования

Для включения пользовательских вкладок при входе через портал авторизации необходимо следующее:

  • Устройство под управлением Android 12 и выше, поддерживающее системные обновления Google Play (см. Mainline ) через модуль Mainline CaptivePortalLogin .
  • Поддержка API портала авторизации ( RFC 8908 ). Подробности см. в разделе «Поддержка API портала авторизации» .

Включите пользовательские вкладки Android

Если ваша сеть уже поддерживает API Captive Portal (RFC 8908), добавьте следующую пару ключ-значение в существующий объект JSON-ответа, чтобы включить поток пользовательских вкладок:

Ключ Ценить Описание
x-android-use-custom-tabs 361335020 Это значение представляет собой номер версии основного модуля Captive Portal Login, выпущенного в январе 2026 года. Устройства с обновлением модуля, равным или более новым, используют процесс входа в систему с помощью пользовательских вкладок.

В этом примере JSON-объекта содержатся все атрибуты портала авторизации, поддерживаемые Android:

{
  "captive": true,
  "user-portal-url": "https://login.example.com",
  "venue-info-url": "https://venue.example.com",
  "seconds-remaining": 3600,
  "x-android-use-custom-tabs": 361335020
}

Ниже перечислены доступные атрибуты портала авторизации в формате JSON:

  • captive : Установите значение true , если требуется аутентификация; установите значение false если пользователь уже находится в сети.
  • user-portal-url : URL страницы входа или оплаты.
  • venue-info-url : Ссылка на ваш сайт для получения информации (например, о рейсах или картах).
  • seconds-remaining : Указывает оставшееся время (в секундах), в течение которого устройство, как ожидается, будет поддерживать интернет-соединение.
  • x-android-use-custom-tabs : Определяет, будет ли устройство использовать пользовательскую вкладку, если она доступна.

Поддержка API портала авторизации

Если ваша сеть не поддерживает API портала авторизации, выполните следующие действия, чтобы включить API портала авторизации и поток пользовательских вкладок.

  1. Обновите конфигурацию DHCP-сервера, добавив параметр DHCP 114.

    • Значение: Укажите полный HTTPS-URL динамически генерируемого JSON-файла, содержащего информацию о портале авторизации (например, https://api.yourvenue.com/status ).

    • Результат: Когда устройство Android подключается к сети, оно отправляет запрос к предоставленному API, вместо того чтобы ждать перенаправления в браузере.

  2. Настройте свой API-сервер так, чтобы он отвечал на HTTP GET-запрос по указанному URL-адресу файлом JSON, информирующим устройство о текущем состоянии портала.

    • Требование HTTPS: Ваш API-сервер должен использовать действительный сертификат HTTPS.

    • Резервный режим безопасности: если сертификат недействителен или самоподписан, устройство переключается на устаревшее поведение портала авторизации.

Обнаружение поведения портала авторизации в Android

API Captive Portal предоставляет надежную альтернативу стандартным сетевым зондам Android для обнаружения существования портала авторизации, позволяя обойти распространенные несоответствия.

Устройства Android проверяют наличие доступа к сети, одновременно отправляя HTTP- и HTTPS-запросы на определенные URL-адреса проверки. Нестабильный успех проверки (например, HTTP-запрос проходит успешно, а HTTPS-запрос завершается неудачей) приводит к частичному состоянию подключения , что может препятствовать автоматическому отображению приложения для входа в систему.

API Captive Portal повышает надежность обнаружения, используя следующее поведение при обнаружении:

  • Если API выдает сообщение "captive": true , система распознает, что находится за порталом, и, минуя стандартные проверки, немедленно отображает интерфейс входа в систему.
  • Если API выдает сообщение "captive": false , система переходит к стандартным проверкам, требуя успешного завершения как HTTP, так и HTTPS-проверок для подтверждения полного доступа в интернет.