אפשר App Check עם ספק מותאם אישית בפלטפורמות של Apple

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

אם אתה רוצה להשתמש Check App עם ספק ברירת המחדל DeviceCheck, לראות להפעיל צ'ק App עם DeviceCheck בפלטפורמות אפל .

לפני שאתה מתחיל

1. הוסף את ספריית App Check לאפליקציה שלך

  1. מוסיפים את התלות עבור בדיקת יישום כדי הפרויקט שלך Podfile :

    pod 'Firebase/AppCheck'

    או, לחילופין, אתה יכול להשתמש במנהל החבילות סוויפט במקום.

    כמו כן, ודא שאתה משתמש בגרסה העדכנית ביותר של כל ספריות לקוח שירות Firebase שאתה תלוי בהן.

  2. הפעלת pod install ולפתוח את יצר .xcworkspace הקובץ.

2. יישם את פרוטוקולי App Check

ראשית, אתה צריך ליצור כיתות המיישמות את AppCheckProvider ו AppCheckProviderFactory פרוטוקולים.

שלך AppCheckProvider בכיתה חייבת להיות getToken(completion:) שיטה, אשר אוסף כול מידע ספקית בדיקת היישום המותאם אישית שלך דורשת הוכחה של אותנטיות, ושולחת אותו שירות רכישת האסימון שלך תמורת App בדוק אסימון. במטמון אסימון ידיות SDK בדוק אפליקציות, כך תמיד לקבל קוד חדש ביישום שלך getToken(completion:) .

מָהִיר

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
    var app: FirebaseApp

    init(withFirebaseApp app: FirebaseApp) {
        self.app = app
        super.init()
    }

    func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {
        DispatchQueue.main.async {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Create AppCheckToken object.
            let exp = Date(timeIntervalSince1970: expirationFromServer)
            let token = AppCheckToken(
                token: tokenFromServer,
                expirationDate: exp
            )

            // Pass the token or error to the completion handler.
            handler(token, nil)
        }
    }
}

Objective-C

@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>

@property FIRApp *app;

- (id)initWithApp:(FIRApp *)app;

@end

@implementation YourCustomAppCheckProvider

- (id)initWithApp:app {
    self = [super init];
    if (self) {
        self.app = app;
    }
    return self;
}

- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
                                                 NSError * _Nullable))handler {
    dispatch_async(dispatch_get_main_queue(), ^{
        // Logic to exchange proof of authenticity for an App Check token.
        // ...

        // Create FIRAppCheckToken object.
        NSTimeInterval exp = expirationFromServer;
        FIRAppCheckToken *token
            = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
                                       expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];

        // Pass the token or error to the completion handler.
        handler(token, nil);
    });
}

@end

כמו כן, ליישם AppCheckProviderFactory בכיתה שיוצרת מקרים של שלך AppCheckProvider יישום:

מָהִיר

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Objective-C

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
    return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}

@end

3. אתחול App Check

הוסף את קוד האתחול הבא לנציג האפליקציה או לאתחול האפליקציה שלך:

מָהִיר

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objective-C

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

לאחר התקנת ספריית App Check באפליקציה שלך, התחל להפיץ את האפליקציה המעודכנת למשתמשים שלך.

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

4. עקוב אחר מדדי בקשות

כעת, כשהאפליקציה המעודכנת שלך נמצאת בידי המשתמשים, תוכל להפעיל את האכיפה של App Check עבור מוצרי Firebase שבהם אתה משתמש. עם זאת, לפני שתעשה זאת, עליך לוודא כי פעולה זו לא תפריע למשתמשים החוקיים הקיימים שלך.

מסד נתונים בזמן אמת, Cloud Firestore ואחסון בענן

כלי חשוב שאתה יכול להשתמש בו כדי לקבל החלטה זו עבור מסד נתונים בזמן אמת, Cloud Firestore ו-Cloud Storage הוא מסך מדדי הבקשה של App Check.

להצגת מדדי בקשת בדיקת היישום עבור מוצר, לפתוח את גדרות פרויקט> בדיקת יישום קטע במסוף Firebase. לדוגמה:

צילום מסך של דף מדדי בדיקת האפליקציה

מדדי הבקשות עבור כל מוצר מחולקים לארבע קטגוריות:

  • בקשות מאומתות הם אלה שיש להם אפליקציות חוקיות בדוק האסימון. לאחר שתפעיל את אכיפת בדיקת האפליקציה, רק בקשות בקטגוריה זו יצליחו.

  • בקשות לקוח מיושנות הן אלה חסרים אסימון בדיקת יישום. בקשות אלה עשויות להיות מגרסה ישנה יותר של Firebase SDK לפני בדיקת האפליקציה נכללה באפליקציה.

  • בקשות ממוצא לא ידוע הן אלה חסרי אפליקציה בדוק אסימון, ואינן נראות כאילו הם באים Firebase SDK. אלה עשויים להיות מבקשות שנעשו עם מפתחות API גנובים או בקשות מזויפות שנעשו ללא Firebase SDK.

  • בקשות לא חוקיות הן כי יש אפליקציה חוקית בדוק אסימון, שעשוי להיות מלקוח inauthentic ניסיון להתחזות האפליקציה שלך, או מסביבות לחיקוי.

ההפצה של קטגוריות אלה עבור האפליקציה שלך אמורה להודיע ​​​​כאשר תחליט לאפשר אכיפה. הנה כמה קווים מנחים:

  • אם כמעט כל הבקשות האחרונות הן מלקוחות מאומתים, שקול לאפשר אכיפה כדי להתחיל להגן על משאבי הקצה האחורי שלך.

  • אם חלק ניכר מהבקשות האחרונות מגיעות מלקוחות שסביר להניח שלא מעודכנים, כדי למנוע הפרעה למשתמשים, שקול לחכות שמשתמשים נוספים יעדכנו את האפליקציה שלך לפני שתפעיל אכיפה. אכיפת בדיקת אפליקציות על אפליקציה שפורסמה תשבור גרסאות קודמות של אפליקציה שאינן משולבות ב-App Check SDK.

  • אם האפליקציה שלך עדיין לא הושקה, עליך להפעיל מיד את אכיפת בדיקת האפליקציה, מכיוון שאין לקוחות מיושנים בשימוש.

פונקציות ענן

עבור פונקציות ענן, אתה יכול לקבל מדדי בדיקת אפליקציות על ידי בחינת יומני הפונקציות שלך. כל הפעלת פונקציה הניתנת להתקשרות פולטת ערך יומן מובנה כמו הדוגמה הבאה:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

אתה יכול לנתח את הערכים האלה במסוף Google Cloud ידי יצירת יומנים מבוסס מונה מטרי עם מסנן הערכים הבא:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

תווית מטרי באמצעות שדה jsonPayload.verifications.appCheck .

5. אפשר אכיפה

כדי לאפשר אכיפה, עקוב אחר ההוראות עבור כל מוצר, להלן. לאחר שתפעיל אכיפה עבור מוצר, כל הבקשות הלא מאומתות למוצר זה יידחו.

מסד נתונים בזמן אמת, Cloud Firestore ואחסון בענן

כדי לאפשר אכיפה עבור מסד נתונים בזמן אמת, Cloud Firestore (iOS ו-Android) ואחסון בענן:

  1. פתח את גדרות פרויקט> בדיקת יישום קטע במסוף Firebase.

  2. הרחב את תצוגת המדדים של המוצר שעבורו ברצונך להפעיל אכיפה.

  3. לחץ לאכוף לאשר את בחירתך.

שים לב שיחלפו עד 10 דקות לאחר הפעלת האכיפה עד שהוא ייכנס לתוקף.

פונקציות ענן

ראה להפעיל את האפליקציה בדוק אכיפה עבור פונקציות ענן .