종속 포털 로그인용 Android 맞춤 탭 구현

Android 맞춤 탭은 공항, 호텔, 비행기에서 볼 수 있는 것과 같은 캡티브 포털의 네트워크 로그인 흐름 내에서 직접 완전한 기능을 갖춘 안전하고 원활한 브라우저 환경을 제공합니다. 사용자의 기본 브라우저를 인증 프로세스에 통합함으로써 맞춤 탭은 사용자에게 인증 정보 및 결제 자동 완성, DRM으로 보호되는 스트리밍, VPN 및 비공개 DNS와 같은 보안 기능이 있는 사용자를 위한 일관된 연결 등 고급 기능을 지원합니다. 맞춤 탭에 대한 자세한 내용은 Android 맞춤 탭 개요를 참고하세요.

기존 WebView 대비 이점

맞춤 탭을 사용하여 사용자의 기본 브라우저를 통합하면 네트워크 운영자를 위한 기존 WebView 기반 인증 흐름에 내재된 여러 기능 제한사항이 해결됩니다.

  • 간소화된 거래: 인터페이스는 사용자 인증 정보와 저장된 결제 정보에 대한 탭 한 번 자동 완성을 지원하여 로그인 프로세스 중에 수동 데이터 입력이 줄어듭니다. (그림 1 참고)
  • 미디어 호환성: 플랫폼은 DRM으로 보호된 콘텐츠 (예: Widevine)를 지원하므로 포털 내에서 암호화된 동영상 스트림을 직접 재생할 수 있습니다. 그림 2를 참고하세요.
  • 보안 구성 지원: 맞춤 탭은 VPN 또는 비공개 DNS를 사용하는 기기의 포털 기능을 유지합니다. 이러한 보안 기능은 표준 브라우저 리디렉션이 실패하는 원인이 되는 경우가 많습니다.
  • 인터페이스 일관성: 맞춤 탭은 시스템 브라우저와 직접 통합되어 전체 브라우저 세션에서 사용할 수 있는 동일한 기능 도구와 UI 요소를 제공합니다.
  • 백그라운드 지속성: 포털이 백그라운드에서 계속 작동하며 연결 기간 내내 지속적인 액세스 포인트 역할을 합니다.

종속 포털 수동 입력 및 자동 완성

그림 1. 수동 입력 (WebView)과 자동 완성 (맞춤 탭) 비교

종속 포털 동영상 재생

그림 2. 동영상이 없는 경우 (WebView)와 동영상이 재생되는 경우 (맞춤 탭)

맞춤 탭 검색 및 연결 흐름

맞춤 탭은 인터페이스를 제공하고 종속 포털 API는 검색에서 연결 인텔리전스 흐름을 관리합니다.

  1. 검색: 네트워크는 DHCP 옵션 114를 사용하여 API 지원을 광고합니다.
  2. 상호작용: Android 기기에서 API 엔드포인트를 쿼리하여 네트워크 상태가 포함된 JSON 페이로드를 가져옵니다.
  3. 연결: JSON 응답에서 맞춤 탭을 사용하도록 신호를 보내면 시스템은 기본 시스템 창 대신 고성능 브라우저 환경에서 포털을 엽니다.

종속 포털 API를 사용하면 Android 기기가 captive 필드를 사용하여 종속 포털이 있는지 감지할 수 있습니다. API는 venue-info-url, seconds-remaining과 같은 다른 필드를 Android 시스템 UI에 통합합니다.

연결을 위한 종속 포털 검색 흐름

그림 3. 연결 흐름에 대한 종속 포털 API 검색

Android 맞춤 탭 사용 설정

맞춤 탭 흐름을 지원하려면 네트워크 운영자가 Captive Portal API를 구현하고 JSON 구성을 통해 선택해야 합니다.

요구사항

종속 포털 로그인에 맞춤 탭을 사용 설정하려면 다음이 필요합니다.

  • Mainline CaptivePortalLogin 모듈을 통해 Google Play 시스템 업데이트 (Mainline 참고)를 지원하고 Android 12 이상을 실행하는 기기
  • 종속 포털 API (RFC 8908) 지원 자세한 내용은 종속 포털 API 지원을 참고하세요.

Android 맞춤 탭 선택

네트워크에서 이미 Captive Portal API (RFC 8908)를 지원하는 경우 다음 키-값 쌍을 기존 JSON 응답 객체에 추가하여 맞춤 탭 흐름을 사용 설정하세요.

설명
x-android-use-custom-tabs 361335020 이 값은 2026년 1월에 출시된 포로 포털 로그인 Mainline 모듈의 버전 번호를 나타냅니다. 이 버전과 같거나 최신 버전의 모듈 업데이트가 적용된 기기는 맞춤 탭 로그인 흐름을 사용합니다.

이 예시 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 옵션 114를 포함하도록 DHCP 서버 구성을 업데이트합니다.

    • 값: 동적으로 생성된 JSON 파일의 전체 HTTPS URL을 제공합니다. 이 파일에는 스플래시 페이지 정보가 포함되어 있습니다 (예: https://api.yourvenue.com/status).

    • 결과: Android 기기가 네트워크에 참여하면 브라우저 리디렉션을 기다리지 않고 제공된 API를 쿼리합니다.

  2. 제공된 URL에서 HTTP GET 요청에 응답하여 기기에 포털의 현재 상태를 알리는 JSON 파일이 전송되도록 API 서버를 구성합니다.

    • HTTPS 요구사항: API 서버는 유효한 HTTPS 인증서를 사용해야 합니다.

    • 보안 대체: 인증서가 유효하지 않거나 자체 서명된 경우 기기는 기존 제한된 포털 동작으로 대체됩니다.

Android 종속 포털 감지 동작

종속 포털 API는 종속 포털 존재를 감지하고 일반적인 불일치를 우회하는 표준 Android 네트워크 프로브의 안정적인 대안을 제공합니다.

Android 기기는 특정 유효성 검사 URL에 HTTP 및 HTTPS 프로브를 동시에 전송하여 네트워크 액세스를 확인합니다. 프로브 성공이 일관되지 않으면 (예: HTTP는 성공하지만 HTTPS는 실패) 부분 연결 상태가 발생하여 로그인 앱이 자동으로 표시되지 않을 수 있습니다.

종속 포털 API는 다음 감지 동작을 사용하여 감지를 더 안정적으로 만듭니다.

  • API가 "captive": true를 보고하면 시스템은 포털 뒤에 있음을 인식하고 표준 프로브를 건너뛰어 로그인 인터페이스를 즉시 표시합니다.
  • API가 "captive": false를 보고하면 시스템은 표준 프로브를 진행하며, 전체 인터넷 액세스를 확인하기 전에 HTTP 및 HTTPS 프로브가 모두 성공해야 합니다.