איך מתחילים להשתמש ב-App Check עם ספק מותאם אישית ב-Android

בדף הזה מוסבר איך להפעיל את App Check באפליקציית Android באמצעות ספק App Check בהתאמה אישית. כשמפעילים את App Check, אפשר לוודא שרק האפליקציה שלכם יכולה לגשת למשאבי Firebase של הפרויקט.

אם רוצים להשתמש ב-App Check עם ספק ברירת המחדל של Play Integrity, אפשר לעיין במאמר בנושא הפעלת App Check עם Play Integrity ב-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:34.0.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, האפליקציה תמיד תשתמש בגרסאות תואמות של ספריות 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:19.0.0")
}

2. הטמעה של ממשקי App Check

קודם כול צריך ליצור מחלקות שמטמיעות את הממשקים AppCheckProvider ו-AppCheckProviderFactory.

במחלקת AppCheckProvider צריך להיות מתודה getToken() שאוספת את כל המידע שספק App Check המותאם אישית שלכם דורש כהוכחה לאותנטיות, ושולחת אותו לשירות להשגת אסימונים בתמורה לאסימון App Check. ‫App Check SDK מטפל בשמירת טוקנים במטמון, לכן תמיד צריך לקבל טוקן חדש בהטמעה של 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

מוסיפים את קוד האתחול הבא לאפליקציה כדי שהוא יפעל לפני שמשתמשים בערכות SDK אחרות של 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

אחרי שתבינו איך App Check ישפיע על המשתמשים שלכם ותהיו מוכנים להמשיך, תוכלו להפעיל את האכיפה של App Check:

שימוש ב-App Check בסביבות ניפוי באגים

אם אחרי שרשמתם את האפליקציה שלכם ל-App Check, אתם רוצים להריץ אותה בסביבה ש-App Check בדרך כלל לא מסווגת כסביבה תקפה, כמו אמולטור במהלך פיתוח, או מסביבת שילוב רציף (CI), אתם יכולים ליצור גרסת ניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות אמיתי.

מידע נוסף זמין במאמר בנושא שימוש ב-App Check עם ספק ניפוי הבאגים ב-Android.