Implementowanie niestandardowych kart Androida na potrzeby logowania do portalu przechwytującego

Niestandardowe karty w Androidzie zapewniają pełną funkcjonalność, bezpieczeństwo i płynność przeglądania bezpośrednio w procesie logowania do sieci w przypadku portali przechwytujących, takich jak te na lotniskach, w hotelach i samolotach. Dzięki integracji głównej przeglądarki użytkownika z procesem uwierzytelniania karty niestandardowe umożliwiają korzystanie z zaawansowanych funkcji, takich jak automatyczne wypełnianie danych logowania i płatności jednym kliknięciem, strumieniowanie treści chronionych przez DRM oraz spójne połączenie dla użytkowników korzystających z funkcji zabezpieczeń, takich jak sieci VPN i prywatny DNS. Więcej informacji o kartach niestandardowych znajdziesz w artykule Omówienie kart niestandardowych w Androidzie.

Zalety w porównaniu ze starszą wersją WebView

Integracja przeglądarki podstawowej użytkownika za pomocą kart niestandardowych rozwiązuje kilka ograniczeń funkcjonalnych związanych z dotychczasowymi procesami uwierzytelniania opartymi na komponentach WebView w przypadku operatorów sieci:

  • Uproszczone transakcje: interfejs obsługuje autouzupełnianie danych logowania i zapisanych informacji o płatnościach jednym kliknięciem, co ogranicza ręczne wprowadzanie danych podczas procesu logowania. (Patrz Rysunek 1).
  • Zgodność z multimediami: platforma obsługuje treści chronione DRM (np. Widevine), co umożliwia odtwarzanie zaszyfrowanych strumieni wideo bezpośrednio w portalu. (Patrz Rysunek 2).
  • Obsługa konfiguracji zabezpieczeń: karty niestandardowe zachowują funkcjonalność portalu na urządzeniach korzystających z sieci VPN lub prywatnego DNS, czyli funkcji zabezpieczeń, które często powodują niepowodzenie przekierowań w standardowych przeglądarkach.
  • Spójność interfejsu: karty niestandardowe są zintegrowane bezpośrednio z przeglądarką systemową, dzięki czemu udostępniają te same narzędzia i elementy interfejsu, które są dostępne w pełnej sesji przeglądarki.
  • Działanie w tle: portal pozostaje aktywny w tle, służąc jako stały punkt dostępu przez cały okres połączenia.

Ręczne wpisywanie danych w portalu przechwytującym i autouzupełnianie

Rysunek 1. Ręczne wpisywanie danych (WebView) a autouzupełnianie (karty niestandardowe).

Odtwarzanie filmów w portalu przechwytującym

Rysunek 2. Brak filmu (WebView) a odtwarzanie filmu (karty niestandardowe).

Proces wykrywania i nawiązywania połączenia z kartami niestandardowymi

Karty niestandardowe udostępniają interfejs, a interfejs Captive Portal API zarządza przepływem informacji od wykrywania do połączenia:

  1. Odkrywanie: sieć reklamuje obsługę interfejsu API za pomocą opcji DHCP 114.
  2. Interakcja: urządzenie z Androidem wysyła zapytanie do punktu końcowego interfejsu API, aby pobrać ładunek JSON zawierający stan sieci.
  3. Połączenie: jeśli odpowiedź JSON wskazuje, że należy użyć kart niestandardowych, system otworzy portal w środowisku przeglądarki o wysokiej wydajności zamiast w podstawowym oknie systemowym.

Interfejs Captive Portal API umożliwia urządzeniom z Androidem wykrywanie, czy istnieje portal przechwytujący, za pomocą pola captive. Interfejs API integruje z interfejsem systemu Android inne pola, takie jak venue-info-urlseconds-remaining.

Proces wykrywania portalu przechwytującego i nawiązywania połączenia

Rysunek 3. Wykrywanie interfejsu API portalu przechwytującego w przypadku przepływu połączenia.

Włączanie kart niestandardowych Androida

Aby obsługiwać przepływ kart niestandardowych, operatorzy sieci muszą wdrożyć interfejs Captive Portal API i wyrazić zgodę za pomocą konfiguracji JSON.

Wymagania

Włączenie kart niestandardowych na potrzeby logowania w portalu przechwytującym wymaga:

  • Urządzenie z Androidem 12 lub nowszym, które obsługuje aktualizacje systemu Google Play (patrz Mainline) za pomocą modułu Mainline CaptivePortalLogin.
  • Obsługa interfejsu Captive Portal API (RFC 8908). Szczegółowe informacje znajdziesz w artykule Obsługa interfejsu Captive Portal API.

Włączanie niestandardowych kart Chrome na Androidzie

Jeśli Twoja sieć obsługuje już interfejs Captive Portal API (RFC 8908), dodaj do istniejącego obiektu odpowiedzi JSON tę parę klucz-wartość, aby włączyć przepływ kart niestandardowych:

Klucz Wartość Opis
x-android-use-custom-tabs 361335020 Ta wartość to numer wersji modułu głównego logowania do portalu przechwytującego wydanego w styczniu 2026 r. Urządzenia z aktualizacją modułu w wersji takiej samej jak ta lub nowszej korzystają z procesu logowania w niestandardowych kartach.

Ten przykładowy obiekt JSON zawiera wszystkie atrybuty strony logowania obsługiwane przez Androida:

{
  "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
}

Dostępne są te atrybuty portalu przechwytującego w formacie JSON:

  • captive: ustaw wartość true, jeśli wymagane jest uwierzytelnianie, lub false, jeśli użytkownik jest już online.
  • user-portal-url: adres URL strony logowania lub płatności.
  • venue-info-url: link do Twojej witryny z informacjami (np. szczegółami lotu lub mapami).
  • seconds-remaining: wskazuje pozostały czas (w sekundach), przez który urządzenie powinno utrzymać połączenie z internetem.
  • x-android-use-custom-tabs: określa, czy urządzenie ma używać karty niestandardowej, gdy jest ona dostępna.

Obsługa interfejsu Captive Portal API

Jeśli Twoja sieć nie obsługuje interfejsu Captive Portal API, wykonaj te czynności, aby włączyć ten interfejs i przepływ niestandardowych kart.

  1. Zaktualizuj konfigurację serwera DHCP, aby uwzględnić opcję DHCP 114.

    • Wartość: podaj pełny adres URL HTTPS dynamicznie generowanego pliku JSON, który zawiera informacje o stronie logowania (np.https://api.yourvenue.com/status).

    • Wynik: gdy urządzenie z Androidem dołącza do sieci, wysyła zapytanie do podanego interfejsu API zamiast czekać na przekierowanie przeglądarki.

  2. Skonfiguruj serwer API tak, aby odpowiadał na żądanie HTTP GET pod podanym adresem URL plikiem JSON, który informuje urządzenie o bieżącym stanie portalu.

    • Wymaganie dotyczące protokołu HTTPS: serwer API musi używać prawidłowego certyfikatu HTTPS.

    • Bezpieczeństwo: jeśli certyfikat jest nieprawidłowy lub samodzielnie podpisany, urządzenie wraca do starszego sposobu działania portalu przechwytującego.

Działanie wykrywania portalu przechwytującego na Androidzie

Interfejs Captive Portal API to niezawodna alternatywa dla standardowych sond sieciowych Androida, która umożliwia wykrywanie portali przechwytujących i omijanie typowych niespójności.

Urządzenia z Androidem sprawdzają dostęp do sieci, wysyłając jednocześnie sondy HTTP i HTTPS do określonych adresów URL weryfikacji. Niespójne wyniki sondowania (np. HTTP działa, ale HTTPS nie) powodują stan częściowej łączności, który może uniemożliwić automatyczne wyświetlanie aplikacji do logowania.

Interfejs Captive Portal API zwiększa niezawodność wykrywania dzięki następującemu zachowaniu:

  • Jeśli interfejs API zgłosi "captive": true, system rozpozna, że znajduje się za portalem, i pominie standardowe testy, aby od razu wyświetlić interfejs logowania.
  • Jeśli interfejs API zgłosi "captive": false, system przeprowadzi standardowe sondy, które wymagają, aby sondy HTTP i HTTPS zakończyły się powodzeniem, zanim potwierdzą pełny dostęp do internetu.