בדף הזה מוסבר איך להפעיל את App Check באפליקציה ל-Android באמצעות ספק App Check בהתאמה אישית. כשמפעילים את App Check, רק האפליקציה שלכם יכולה לגשת למשאבי Firebase של הפרויקט.
אם אתם רוצים להשתמש ב-App Check עם ספק ברירת המחדל של Play Integrity, עיינו במאמר הפעלת App Check עם Play Integrity ב-Android.
לפני שמתחילים
אם עדיין לא עשיתם זאת, הוסיפו את Firebase לפרויקט Android.
1. להוסיף את ספריית App Check לאפליקציה
בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל<project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מוסיפים את התלות בספריית App Check ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בניהול גרסאות של הספרייה.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.2")) // Add the dependency for the App Check library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck") }
כשמשתמשים ב-Firebase Android BoM, האפליקציה תמיד משתמשת בגרסאות תואמות של ספריות Firebase ל-Android.
(אפשרות חלופית) מוסיפים תלות של הפרויקט בספריות של Firebase בלי להשתמש ב-BoM
אם אתם בוחרים לא להשתמש ב-Firebase BoM, אתם צריכים לציין כל גרסה של ספריית Firebase בשורת התלות שלה.
שימו לב: אם אתם משתמשים בכמה ספריות של Firebase באפליקציה, מומלץ מאוד להשתמש ב-BoM כדי לנהל את גרסאות הספרייה, וכך לוודא שכל הגרסאות תואמות.
dependencies { // Add the dependency for the App Check library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck:20.0.0") }
2. הטמעת הממשקים של App Check
קודם כול, צריך ליצור מחלקות שמטמיעות את הממשקים AppCheckProvider ו-AppCheckProviderFactory.
במחלקה AppCheckProvider צריכה להיות שיטה getToken(), שאוספת את כל המידע שספק ה-App Check המותאם אישית דורש כהוכחה לאותנטיות, ושולחת אותו לשירות רכישת האסימונים בתמורה לאסימון App Check. ה-SDK של App Check מטפל בשמירת הטוקן במטמון, לכן תמיד צריך לקבל טוקן חדש בהטמעה של getToken().
Kotlin
class YourCustomAppCheckToken( private val token: String, private val expiration: Long, ) : AppCheckToken() { override fun getToken(): String = token override fun getExpireTimeMillis(): Long = expiration } class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider { override fun getToken(): Task<AppCheckToken> { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. val expMillis = expirationFromServer * 1000L - 60000L // Create AppCheckToken object. val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis) return Tasks.forResult(appCheckToken) } }
Java
public class YourCustomAppCheckToken extends AppCheckToken { private String token; private long expiration; YourCustomAppCheckToken(String token, long expiration) { this.token = token; this.expiration = expiration; } @NonNull @Override public String getToken() { return token; } @Override public long getExpireTimeMillis() { return expiration; } } public class YourCustomAppCheckProvider implements AppCheckProvider { public YourCustomAppCheckProvider(FirebaseApp firebaseApp) { // ... } @NonNull @Override public Task<AppCheckToken> getToken() { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. long expMillis = expirationFromServer * 1000L - 60000L; // Create AppCheckToken object. AppCheckToken appCheckToken = new YourCustomAppCheckToken(tokenFromServer, expMillis); return Tasks.forResult(appCheckToken); } }
בנוסף, צריך להטמיע מחלקת AppCheckProviderFactory שיוצרת מופעים של הטמעת AppCheckProvider:
Kotlin
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory { override fun create(firebaseApp: FirebaseApp): AppCheckProvider { // Create and return an AppCheckProvider object. return YourCustomAppCheckProvider(firebaseApp) } }
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory { @NonNull @Override public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) { // Create and return an AppCheckProvider object. return new YourCustomAppCheckProvider(firebaseApp); } }
3. מפעילים את App Check
מוסיפים את קוד האתחול הבא לאפליקציה כדי שהוא יפעל לפני שמשתמשים ב-Firebase SDKs אחרים של Firebase:
Kotlin
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
השלבים הבאים
אחרי שמתקינים את הספרייה App Check באפליקציה, מתחילים להפיץ את האפליקציה המעודכנת למשתמשים.
אפליקציית הלקוח המעודכנת תתחיל לשלוח אסימוני App Check עם כל בקשה שהיא שולחת ל-Firebase, אבל מוצרי Firebase לא ידרשו שהאסימונים יהיו תקפים עד שתפעילו את האכיפה בקטע App Check במסוף Firebase.
מעקב אחרי מדדים והפעלת אכיפה
לפני שמפעילים את האכיפה, חשוב לוודא שהיא לא תפריע למשתמשים הלגיטימיים הקיימים. מצד שני, אם אתם רואים שימוש חשוד במשאבי האפליקציה, יכול להיות שכדאי להפעיל את האכיפה מוקדם יותר.
כדי לקבל החלטה, אתם יכולים לבדוק את המדדים של App Check בשירותים שבהם אתם משתמשים:
- מעקב אחרי מדדי הבקשות של App Check ב-Firebase AI Logic, ב-SQL Connect, ב-Realtime Database, ב-Cloud Firestore, ב-Cloud Storage, ב-Authentication, ב-Google Identity ל-iOS, ב-Maps JavaScript API וב-Places API (חדש).
- עוקבים אחרי מדדי הבקשות של App Check ב-Cloud Functions.
הפעלת האכיפה של App Check
אחרי שתבינו איך App Check ישפיע על המשתמשים שלכם ותהיו מוכנים להמשיך, תוכלו להפעיל את האכיפה של App Check:
- הפעלת אכיפה של App Check ב-Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity ל-iOS, Maps JavaScript API ו-Places API (חדש).
- מפעילים את האכיפה של App Check עבור Cloud Functions.
שימוש ב-App Check בסביבות ניפוי באגים
אם אחרי שרשמתם את האפליקציה ל-App Check, אתם רוצים להריץ אותה בסביבה ש-App Check לא מסווג בדרך כלל כתקינה, כמו אמולטור במהלך הפיתוח או מסביבת שילוב רציף (CI), אתם יכולים ליצור גרסת build לניפוי באגים של האפליקציה שמשתמשת בספק האימות לצורכי ניפוי באגים של App Check במקום בספק אימות אמיתי.
איך משתמשים ב-App Check עם ספק אימות לצורכי ניפוי באגים ב-Android