בדף הזה מוסבר איך להפעיל את 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:33.4.0")) // 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, האפליקציה שלכם תשתמש תמיד בגרסאות תואמות של ספריות Android של Firebase.
(חלופה) מוסיפים יחסי תלות של ספריית 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:18.0.0") }
2. הטמעת ממשקי App Check
קודם כול צריך ליצור כיתות שמטמיעות את הממשקים AppCheckProvider
ו-AppCheckProviderFactory
.
לכיתה AppCheckProvider
צריכה להיות שיטה getToken()
, שמאגרת את כל המידע שנחוץ לספק App Check המותאם אישית כהוכחת אותנטיות, ושולחת אותו לשירות קבלת האסימון בתמורה לאסימון App Check. ה-SDK של App Check מטפל בשמירה במטמון של אסימונים, לכן תמיד מקבלים
אסימון חדש בהטמעה של getToken()
.
Kotlin+KTX
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+KTX
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
צריך להוסיף את קוד האתחול הבא לאפליקציה כדי שהיא תפעל לפני השימוש ערכות SDK אחרות של Firebase:
Kotlin+KTX
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 מדדי בקשות Realtime Database, Cloud Firestore, Cloud Storage, Firebase Data Connect (תצוגה מקדימה), Authentication (בטא) ו-Vertex AI in Firebase (תצוגה מקדימה).
- מעקב אחרי מדדי הבקשות App Check של Cloud Functions.
הפעלת אכיפה של App Check
אחרי שתבחנו איך App Check ישפיע על המשתמשים שלכם ותהיה לכם כוונה להמשיך, תוכלו להפעיל את האכיפה של App Check:
- הפעלת האכיפה של App Check לגבי Realtime Database, Cloud Firestore, Cloud Storage, Firebase Data Connect (תצוגה מקדימה), Authentication (בטא) ו-Vertex AI in Firebase (תצוגה מקדימה).
- מפעילים את אכיפת App Check עבור Cloud Functions.
שימוש ב-App Check בסביבות ניפוי באגים
אם אחרי שרושמים את האפליקציה ל-App Check רוצים להריץ אותה בסביבה שבדרך כלל App Check לא מסווגת כתקינה, כמו אמולטור במהלך הפיתוח או מסביבת אינטגרציה רציפה (CI), אפשר ליצור גרסה לניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות אמיתי.
למידע נוסף, אפשר לעיין במאמר שימוש ב-App Check עם ספק ניפוי הבאגים ב-Android.