הטמעה של כרטיסיות מותאמות אישית ב-Android להתחברות לפורטל שבוי

התכונה 'כרטיסיות מותאמות אישית ב-Android' מספקת חוויית גלישה מלאה, מאובטחת וחלקה ישירות בתהליך ההתחברות לרשת עבור פורטלים שבויים, כמו אלה שנמצאים בשדות תעופה, במלונות ובמטוסים. שילוב הדפדפן הראשי של המשתמש בתהליך האימות מאפשר לכרטיסיות בהתאמה אישית לספק פונקציונליות מתקדמת, כולל מילוי אוטומטי של פרטי כניסה ותשלומים בלחיצה אחת, סטרימינג מוגן ב-DRM וקישוריות עקבית למשתמשים עם תכונות אבטחה כמו VPN ו-DNS פרטי. מידע נוסף על כרטיסיות מותאמות אישית זמין במאמר סקירה כללית של כרטיסיות מותאמות אישית ב-Android.

היתרונות בהשוואה ל-WebView מדור קודם

שילוב של דפדפן ראשי של משתמש באמצעות כרטיסיות בהתאמה אישית פותר כמה מגבלות פונקציונליות שקיימות בתהליכי אימות מדור קודם שמבוססים על WebView עבור מפעילי רשת:

  • עסקאות מהירות וחלקות: הממשק תומך במילוי אוטומטי של פרטי כניסה ופרטי תשלום שמורים בלחיצה אחת, וכך מצמצם את הצורך בהזנת נתונים ידנית במהלך תהליך הכניסה. (ראו איור 1).
  • תאימות למדיה: הפלטפורמה תומכת בתוכן שמוגן באמצעות DRM (כמו Widevine), ומאפשרת הפעלה של סטרימינג מוצפן של סרטונים ישירות בפורטל. (ראו איור 2).
  • תמיכה בהגדרות אבטחה: כרטיסיות בהתאמה אישית שומרות על הפונקציונליות של הפורטל במכשירים שמשתמשים ב-VPN או ב-DNS פרטי, תכונות אבטחה שלרוב גורמות להפניות אוטומטיות רגילות בדפדפן להיכשל.
  • עקביות הממשק: כרטיסיות בהתאמה אישית משולבות ישירות בדפדפן המערכת, ומספקות את אותם כלים פונקציונליים ורכיבי ממשק משתמש שזמינים בסשן מלא של דפדפן.
  • המשכיות ברקע: הפורטל ממשיך לפעול ברקע ומשמש כנקודת גישה קבועה לאורך תקופת החיבור.

הזנה ידנית ומילוי אוטומטי בפורטל שבוי

איור 1. קלט ידני (WebView) לעומת מילוי אוטומטי (כרטיסיות מותאמות אישית).

הפעלת סרטון בפורטל שבוי

איור 2. אין סרטון (WebView) לעומת הפעלת סרטון (כרטיסיות מותאמות אישית).

תהליך הגילוי והחיבור של כרטיסיות בהתאמה אישית

הכרטיסיות המותאמות אישית מספקות את הממשק, אבל Captive Portal API מנהל את זרימת המידע של הגילוי לחיבור:

  1. גילוי: הרשת מפרסמת את התמיכה שלה ב-API באמצעות DHCP Option 114.
  2. אינטראקציה: מכשיר Android שולח שאילתה לנקודת הקצה של ה-API כדי לאחזר מטען ייעודי (payload) בפורמט JSON שמכיל את סטטוס הרשת.
  3. חיבור: אם תגובת ה-JSON מציינת שיש להשתמש בכרטיסיות בהתאמה אישית, המערכת פותחת את הפורטל בסביבת דפדפן עם ביצועים גבוהים במקום בחלון מערכת בסיסי.

‫Captive Portal API מאפשר למכשירי Android לזהות אם קיים פורטל שבוי באמצעות השדה captive. ממשק ה-API משלב שדות אחרים כמו venue-info-url ו-seconds-remaining בממשק המשתמש של מערכת Android.

תהליך החיבור לפורטל שבוי

איור 3. גילוי של API של פורטל שבוי לתהליך החיבור.

הפעלת כרטיסיות מותאמות אישית ב-Android

כדי לתמוך בתהליך של כרטיסיות בהתאמה אישית, מפעילים רשתות צריכים להטמיע את Captive Portal API ולהביע הסכמה באמצעות הגדרת JSON.

דרישות

כדי להפעיל כרטיסיות בהתאמה אישית לכניסה לפורטל שבוי, צריך:

  • מכשיר עם Android מגרסה 12 ומעלה שתומך בעדכוני מערכת Google Play (ראו Mainline) דרך מודול Mainline CaptivePortalLogin.
  • תמיכה ב-Captive Portal API‏ (RFC 8908). פרטים נוספים זמינים במאמר בנושא תמיכה ב-Captive Portal API.

הבעת הסכמה לשימוש בכרטיסיות מותאמות אישית ב-Android

אם הרשת שלכם כבר תומכת ב-API של Captive Portal (RFC 8908), צריך להוסיף את צמד מפתח-ערך הבא לאובייקט התגובה הקיים של JSON כדי להפעיל את התהליך של כרטיסיות בהתאמה אישית:

מפתח ערך תיאור
x-android-use-custom-tabs 361335020 הערך הזה מייצג את מספר הגרסה של מודול Captive Portal Login Mainline שפורסם בינואר 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: קובע אם המכשיר ישתמש בכרטיסייה המותאמת אישית כשהיא זמינה.

תמיכה ב-Captive Portal API

אם הרשת שלכם לא תומכת ב-Captive Portal API, צריך לפעול לפי השלבים הבאים כדי להפעיל את Captive Portal API ואת התהליך של כרטיסיות בהתאמה אישית.

  1. מעדכנים את ההגדרות של שרת ה-DHCP כך שיכללו את אפשרות DHCP מספר 114.

    • ערך: מציינים את כתובת ה-URL המלאה מסוג HTTPS של קובץ ה-JSON שנוצר באופן דינמי ומכיל מידע על דף הכניסה (לדוגמה, https://api.yourvenue.com/status).

    • תוצאה: כשמכשיר Android מצטרף לרשת, הוא שולח שאילתה ל-API שצוין במקום לחכות להפניה אוטומטית של הדפדפן.

  2. מגדירים את שרת ה-API כך שיגיב לבקשת HTTP GET בכתובת ה-URL שצוינה עם קובץ JSON שמעדכן את המכשיר לגבי המצב הנוכחי של הפורטל.

    • דרישת HTTPS: שרת ה-API שלכם חייב להשתמש באישור HTTPS תקין.

    • גיבוי אבטחה: אם האישור לא תקין או שהוא בחתימה עצמית, המכשיר חוזר להתנהגות של פורטל שבוי מדור קודם.

התנהגות של זיהוי פורטלים שבויים ב-Android

ממשק ה-API של הפורטל השבוי מספק חלופה אמינה לבדיקות רשת רגילות של Android לזיהוי קיומו של פורטל שבוי, ועוקף אי-התאמות נפוצות.

מכשירי Android בודקים את הגישה לרשת על ידי שליחת בדיקות בו-זמניות של HTTP ו-HTTPS לכתובות URL ספציפיות לאימות. אם הבדיקות לא מצליחות באופן עקבי (לדוגמה, HTTP מצליח אבל HTTPS נכשל), המצב הוא קישוריות חלקית, מה שיכול למנוע את ההצגה האוטומטית של אפליקציית הכניסה.

‫Captive Portal API משפר את מהימנות הזיהוי באמצעות התנהגות הזיהוי הבאה:

  • אם ה-API מדווח על "captive": true, המערכת מזהה שהמכשיר נמצא מאחורי פורטל ומדלגת על הבדיקות הרגילות כדי להציג מיד את ממשק הכניסה.
  • אם ה-API מחזיר "captive": false, המערכת ממשיכה בבדיקות רגילות, ונדרש שהבדיקות של HTTP ו-HTTPS יצליחו כדי לאשר גישה מלאה לאינטרנט.