Auth Tab מספק תהליך אימות מאובטח ופשוט לשימוש באפליקציות ל-Android. כשיוצרים ומפעילים AuthTabIntent
, אפשר להפעיל כרטיסייה מותאמת אישית ייעודית שנועדה לנהל את חוויית האימות מקצה לקצה. הכרטיסייה פשוטה ויש לה יכולות מוגבלות, כדי לאפשר למשתמשים להתמקד במשימה שבה הם מטפלים. בסיום, הכרטיסייה מחזירה לאפליקציה את התוצאה באמצעות https או סכימות בהתאמה אישית.


החל מגרסה 132 של Chrome, Auth Tab יכול להחליף ישירות שילובים קיימים של אימות בכרטיסיות בהתאמה אישית. אצל משתמשים שהמכשירים שלהם לא תומכים בכרטיסיית האימות, המעבר לכרטיסיות בהתאמה אישית מתבצע באופן אוטומטי. כדי לעבור מכרטיסיות בהתאמה אישית לכרטיסיית אימות, צריך לשנות כמה שורות קוד.
איך זה עובד
באמצעות Auth Tab, אפליקציית לקוח פותחת כרטיסייה מותאמת אישית מיוחדת שמציגה חלון דפדפן שבו נטענת כתובת URL עם דף האימות הצפוי. בסיום, הכרטיסייה Auth מחזירה את תוצאת האימות באמצעות קריאה חוזרת (callback).
לאחר האימות, כשמתרחש ניווט לכתובת ה-URI להפניה אוטומטית חזרה (קרב-back) שצוינה קודם, ההפניה האוטומטית מתועדת ומוחזרת לאפליקציית הלקוח באמצעות קריאה חוזרת (callback). בהפניות אוטומטיות באמצעות הסכימה https, הדפדפן מאמת באמצעות Digital Asset Links שאותו בעל תוכן דיגיטלי הוא הבעלים של דומיין ההפניה האוטומטית ושל אפליקציית הלקוח.
הלקוח מקבל את ה-URI שאליו מנווטים עם הסכימה של ההפניה האוטומטית (או, עבור https, את המארח והנתיב של ההפניה האוטומטית) באמצעות פונקציית ה-callback שצוינה. הנתונים האלה כוללים קוד תוצאה וגם נתונים אחרים שסופקו על ידי ממשק האימות. אפשר להשתמש בנתונים האלה כדי לאמת את האימות או לטפל בתרחישים שלא הסתיימו בהצלחה.
למה כדאי להשתמש בכרטיסייה Auth?
לפני Auth Tab, אפשר היה להשתמש בכוונת רכישה רגילה של כרטיסיות בהתאמה אישית כדי להפעיל תהליכי אימות. מומלץ להשתמש בכרטיסיית אימות כי היא מספקת אבטחה משופרת, חוויית שימוש יעילה יותר וגם מבודדת חלק מהרכיבים הפנימיים של האימות מקוד הלקוח. לכן, חוויית השימוש ב-Auth Tab טובה יותר.
אבטחה משופרת
בהטמעה רגילה של כרטיסייה בהתאמה אישית, נדרש כוונה (intent) כדי לקבל נתונים מחלון הדפדפן שמטפל באימות. לשם כך נדרש קוד נוסף, והאפליקציה שלכם חשופה להפרעה פוטנציאלית לכוונה שלכם. באמצעות Auth Tab, הנתונים מתקבלים באמצעות קריאה חוזרת (callback), עם העברת נתונים ישירה בין Android API לבין אפליקציית הלקוח.
חוויית שימוש נוחה
בכרטיסייה מותאמת אישית, למשתמש יש גישה לתכונות נוספות בדפדפן שעשויות להיות לא רצויות בתהליך אימות. בכרטיסיית אימות מוצגת חוויה פשוטה יותר, שבה הוסרו רוב אפשרויות ההתאמה האישית שזמינות בכרטיסייה מותאמת אישית רגילה. בדפדפני Chrome, הפעולות האלה כוללות את לחצן המינימום, תפריט ההקשר של לחיצה ארוכה ומגע לחיפוש, וגם את האפשרויות בתפריט פתיחה ב-Chrome, הוספה לסימניות, הורדה ושיתוף והוספה למסך הבית.
בכרטיסיות האימות עדיין יש תכונות שמאפשרות לדפדפן למלא אוטומטית סיסמאות ותשלומים שנשמרו בעבר, לנווט אחורה או קדימה, לרענן, להציג את פרטי הדף, לבקש גרסה למחשב של הדף ולספק תרגום.
הפשטת נתונים
הטמעת Auth Tab לבדו מבטלת את הצורך בכוונה לקבל נתונים מהדפדפן, וגם את מסנני הכוונה ב-AndroidManifest.xml
שנדרשו בעבר כדי שהאימות יפעל כראוי. כך מפחיתים את המורכבות בצד הלקוח. עדיין אפשר לכלול חלק מהתכונות האלה בקוד הלקוח כדי לספק תאימות לאחור עם כרטיסיות בהתאמה אישית במצבים שבהם הכרטיסייה לאימות לא זמינה במכשירי המשתמשים.
הטמעת כרטיסיית אימות
כדי להשתמש ב-Auth Tab, צריך להתקין את ספריית האימות בדפדפן של AndroidX. אפשר להוסיף את AndroidX Browser Library בקטע יחסי התלות בקובץ build.gradle
של הפרויקט. ממשקי ה-API זמינים בגרסה אלפא. מוסיפים את הטקסט הבא לקובץ ה-build:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
לפני שמפעילים כרטיסיית אימות, מגדירים ActivityResultLauncher
שמקבל ActivityResultCaller
וגם ActivityResultCallback
. עושים זאת לפני יצירת הפעילות או החלק:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
לאחר מכן, משתמשים ב-AuthTabIntent.Builder
כדי ליצור AuthTabIntent
, ואז קוראים ל-method launch
. שיטות ההפעלה מקבלות אחת משתי קבוצות של פרמטרים על סמך הסכימה הרצויה:
redirectScheme: עבור סכימה מותאמת אישית של הפניה אוטומטית, הדפדפן מפנה אוטומטית את המשתמש לכתובת ה-URI עם הסכימה שצוינה ומחזיר אותה.
redirectHost, redirectPath: לסכמות של הפניות אוטומטיות מסוג https, ה-API דורש מארח ונתיב נפרדים כדי שהדפדפן יוכל לזהות את ההפניה האוטומטית ולהחזיר את ה-URI. כשמשתמשים ב-https, נדרש אימות של קישורים לנכסים דיגיטליים.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
מעבר מכרטיסיות בהתאמה אישית לכרטיסיית אימות
מעדכנים את ההטמעה הקיימת של אימות בכרטיסיות מותאמות אישית על ידי שינוי הכוונה של הכרטיסיות המותאמות אישית לכוונה החדשה של כרטיסיית האימות. אחרי הוספת הקוד, מאתרים את הכוונה של הכרטיסיות בהתאמה אישית ומשנים אותה לכוונה החדשה של Auth Tab.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
חזרה לכרטיסיות בהתאמה אישית
יש הטמעות שבהן נדרש אימות אם המכשיר של המשתמש לא מצויד ביכולת לטפל בכרטיסיית האימות. לדוגמה, המצב הזה עשוי לקרות אם דפדפן ברירת המחדל לא תומך בכרטיסיית האימות או אם גרסת דפדפן ברירת המחדל לא ברמה הנדרשת. במקרים כאלה, בדפדפנים שתומכים בכרטיסיות בהתאמה אישית, כוונת Auth Tab תפעיל באופן אוטומטי כרטיסייה בהתאמה אישית במקום זאת.
כדי לטפל במצב הזה בצורה חלקה, מוסיפים את ההטמעה של Auth Tab תוך שמירה על הקוד הקיים של הכרטיסיות המותאמות אישית לטיפול בתהליכי האימות כחלופה.
משתמשים עם מכשירים שמותאמים לשימוש בכרטיסיית אימות יראו את התהליך החדש של כרטיסיית האימות, בעוד שאחרים יחזרו להטמעה הקודמת של כרטיסיות בהתאמה אישית. חשוב לטפל בנתונים שיכולים להגיע ל-ActivityResultCallback
או לכוונה לפעילות. הערה: אם משתמשים ב-AuthTabIntent
כדי להפעיל את חוויית ה fallback, והדפדפן הנוכחי לא תומך בכרטיסיית האימות, האפליקציה תקבל את התוצאה Activity.RESULT_CANCELED
כשהכרטיסייה בהתאמה אישית תיסגר.
דוגמה להטמעה של Auth Tab עם חזרה לכרטיסיות בהתאמה אישית מופיעה בספרייה Android Browser Helper.