שימוש ב-App Check כדי לאבטח את Navigation SDK ל-Android
Firebase App Check מספק הגנה לשיחות מהאפליקציה אל Google Maps Platform על ידי חסימת תנועה שמגיעה ממקורות אחרים מלבד האפליקציות הלגיטימיות שלכם. היא עושה זאת על ידי בקשת הערכה של האותנטיות של האפליקציה או המכשיר מספק אישורים כמו Play Integrity. כשמשלבים את האפליקציה עם App Check, מוסיפים הגנה מפני בקשות זדוניות ולא מורשות, וכך מונעים חיובים לא מורשים. בנוסף, App Check משפר באופן משמעותי את הדיווח על שיבושים בזמן אמת במערכת האפליקציות שלכם, וכך מועיל לכל הנהגים שמשתמשים באפליקציה. מידע נוסף זמין במאמר בנושא דיווח על שיבושים.
למה כדאי להשתמש ב-App Check?
השירות App Check מגן על שני תחומים נפרדים ב-Navigation SDK ל-Android: פונקציונליות הניווט העיקרית ודיווח על שיבושים.
ניווט
התכונה App Check עוזרת לחסום בקשות של Navigation SDK ל-Android ממקורות זדוניים או לא מורשים. ההגנה הזו מועילה לכם ישירות כי היא מונעת הונאות שקשורות לחיוב וניצול מלא של המכסות בפרויקט.
דיווח על שיבושים
מומלץ מאוד להשתמש ב-App Check אם האפליקציה תומכת בדיווח על שיבושים בזמן אמת וביכולות הצבעה. הפעלת App Check מבטיחה שהנהגים יקבלו את המסלולים המדויקים ביותר, תוך התחשבות בכל המשוב בזמן אמת.
למה חשוב להשתמש ב-App Check לצורך דיווח:
- רמת מהימנות גבוהה לגבי חסימות: אירועים שמשפיעים על המסלול, כמו חסימות כבישים, יכולים לשנות באופן משמעותי את התנהגות הניתוב של כל הנהגים. כדי להגן על המפה מפני ונדליזם, ספאם או דיווחים לא מדויקים, תשתית הפיקוח של Google על שיבושים שגורמים לסגירת כבישים מסתמכת על אותות חזקים של תקינות המכשיר ותקינות האפליקציה.
- איך App Check מאמת דוחות: דוחות ודירוגים של משתמשים שנשלחים מ-Navigation SDK for Android כוללים את טוקן App Check. ה-token משמש את ה-Backend של Google כדי לאמת את הלגיטימיות של המשוב, וכך להעלות את רמת האמינות שלו ולאפשר את הערכתו לצורך השפעה על המפה בזמן אמת.
- ההשפעה של השמטת App Check: דוחות שנשלחים בלי טוקן App Check תקין נבדקים במסגרת מודל עם רמת מהימנות נמוכה יותר, ויכול להיות שהם יעובדו רק כאותות שקטים. המשמעות היא שהמשתמשים עדיין יכולים לדווח ולהצביע, אבל יש פחות סיכוי שהדיווחים שלהם יופיעו במפה או ישפיעו על המסלולים של נהגים אחרים, ויהיה צורך באימות נוסף.
האם App Check מתאים לי?
ברוב המקרים מומלץ להשתמש ב-App Check, אבל אין צורך להשתמש בו או שהוא לא נתמך בתרחישים הבאים:
- אפליקציות פרטיות או ניסיוניות: אם האפליקציה לא נגישה לציבור, לא צריך להשתמש ב-App Check.
- מכשירים שנפרצו: ספקי האימות המומלצים מונעים את ההפעלה של Navigation SDK for Android במכשירים לא מהימנים, כמו טלפונים עם הרשאת Root או טלפונים פרוצים. כדי לתמוך במכשירים האלה, צריך לפרוס ספק אימות בהתאמה אישית.
- מכשירי Android ללא שירותי Google לנייד: כדי להשתמש ב-Play Integrity, במכשירי Android צריכים לפעול שירותי Google לנייד (GMS). אם אתם מתכננים לתמוך במכשירי Android שאין בהם GMS, אתם צריכים לפרוס ספק אימות מותאם אישית.
סקירה כללית של שלבי ההטמעה
כדי לשלב את האפליקציה עם App Check, פועלים לפי השלבים הבאים:
- מוסיפים את Firebase לאפליקציה.
- מוסיפים את ספריית App Check ומפעילים את App Check.
- הוספת ספק טוקנים. בשלב הזה מופעל ספק האימות שבחרתם כדי לאמת את תקינות המכשיר או האפליקציה.
- מאתחלים את ממשקי ה-API של Navigation ו-App Check.
- מפעילים את ניפוי הבאגים. האפשרות הזו שימושית במהלך הפיתוח או בסביבות של אינטגרציה רציפה (CI).
- מומלץ לעקוב אחרי הבקשות של האפליקציה לפני שמפעילים את האכיפה. כך תוכלו לאכוף את השימוש ב-App Check בצורה חלקה בלי לשבש את חוויית המשתמש.
שיקולים בתכנון שילוב של App Check
- מכסות של ספק אישורים: לספק האישורים המומלץ שלנו, Play Integrity, יש מגבלה יומית על מספר הקריאות לרמת השימוש הרגילה ב-API שלו. מידע נוסף על מגבלות על קריאות זמין בדף הגדרה במסמכי התיעוד למפתחים של Google Play Integrity.
- זמן האחזור בהפעלה: ברוב המקרים, המשתמשים לא יחוו זמן אחזור במהלך שימוש רגיל, כי אסימוני App Check נשמרים במטמון במכשיר. המערכת מרעננת אוטומטית את האסימונים של App Check ברקע לפני שהתוקף שלהם פג, כדי לשמור על ביצועים חלקים. עם זאת, אם לא קיים טוקן תקף של App Check, משתמשי האפליקציה יחוו השהיה מסוימת בהפעלה. לדוגמה, השהייה הזו מתרחשת במהלך הפעלות קרות כשפג התוקף של טוקן שנשמר במטמון או כשהוא חסר.
- אורך החיים של הטוקן: אורך החיים (TTL) קובע את משך הזמן שבו הטוקן של App Check תקף לפני שצריך לרענן אותו. אפשר להגדיר את משך הזמן הזה מ-30 דקות עד 7 ימים במסוף Firebase. מומלץ להגדיר משך זמן של שעה כערך בסיסי מאובטח, אבל ה-SDK מנסה לבצע רענונים ברקע באופן אוטומטי בערך בחצי ממשך ה-TTL. הוראות מפורטות לשימוש במסוף זמינות בתיעוד של Firebase App Check.
שילוב האפליקציה עם App Check
דרישות מוקדמות ודרישות
- אפליקציה עם Navigation SDK ל-Android בגרסה 7.9 ואילך.
- טביעת האצבע לאישור מסוג SHA-256 של האפליקציה.
- שם החבילה של האפליקציה.
- אתם צריכים להיות הבעלים של האפליקציה ב-מסוף Google Cloud.
- מזהה הפרויקט של האפליקציה במסוף Google Cloud.
שלב 1: מוסיפים את Firebase לאפליקציה
פועלים לפי ההוראות במסמכי התיעוד למפתחים של Firebase כדי להוסיף את Firebase לאפליקציה. מוסיפים את הקובץ google-services.json לספרייה ברמת האפליקציה של הפרויקט.
שלב 2: מוסיפים את ספריית App Check ומפעילים את App Check
מוסיפים את התלות App Check לקובץ build.gradle של האפליקציה:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
מאתחלים את App Check במחלקה Application או בפעילות הראשית:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
שלב 3: מוסיפים את ספק הטוקנים
יוצרים הטמעה של הממשק MapsAppCheckTokenProvider. ספק זה מאחזר באופן אסינכרוני טוקנים של App Check מ-Firebase App Check ומעביר אותם ל-Navigation SDK עבור מחסנית הרשת של Android באמצעות MapsAppCheckTokenCallback:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
שלב 4: הפעלת ה-API של Navigation ושל App Check
מפעילים את Navigation SDK ל-Android ורושמים את מופע ספק האסימונים המאוחד באמצעות MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
שלב 5: הפעלת ניפוי באגים (אופציונלי)
אחרי שתאכפו את App Check על Navigation SDK for Android, התכונות של האפליקציה שתלויות ב-Navigation SDK for Android לא יפעלו בסימולטור או בסביבת שילוב רציף (CI), כי הסביבות האלה לא עומדות בדרישות של מכשירים תקינים. כדי להריץ את האפליקציה בסביבות האלה במהלך הפיתוח והבדיקות, צריך ליצור גרסת ניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות בסביבת ייצור.
- מוסיפים את התלות של ספק אימות לצורכי ניפוי באגים לקובץ
build.gradleשל האפליקציה:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- מגדירים את App Check כך שישתמש במפעל ספקי אימות לצורכי ניפוי באגים בגרסאות build לניפוי באגים של האפליקציה:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- מפעילים את האפליקציה באמולטור או במכשיר לניפוי באגים. הכלי App Check ידפיס אסימון מקומי לניפוי באגים בפלט של logcat.
- מעתיקים את אסימון הניפוי הזה ורושמים אותו במסוף Firebase. לפרטים נוספים, עיינו במסמכי העזרה בנושא ספק אימות לצורכי ניפוי באגים של Firebase App Check.
שלב 6: מעקב אחרי בקשות האפליקציה והחלטה על אכיפה
לפני שמפעילים את האכיפה, כדאי לעקוב אחרי הבקשות של האפליקציה כדי לוודא שלא תפריעו למשתמשים לגיטימיים.
- כדי לראות את אחוז התנועה המאומתת לעומת התנועה הלא מאומתת, עוברים למסך המדדים של App Check במסוף Firebase.
- אחרי שמוודאים שרוב התנועה מאומתת ושהמשתמשים הלגיטימיים עדכנו לגרסה של האפליקציה שכוללת את ההטמעה של App Check, מפעילים את האכיפה.
- אחרי שמפעילים את האכיפה, App Check דוחה את כל התנועה ללא טוקן תקף של App Check.