הפעל בדיקת אפליקציות עם ספק מותאם אישית ב- iOS

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

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

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

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

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

    pod 'Firebase/AppCheck'

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

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

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

2. יישום פרוטוקולי בדיקת האפליקציות

ראשית, אתה צריך ליצור כיתות המיישמות את 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. אתחל את בדיקת האפליקציות

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

מָהִיר

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

FirebaseApp.configure()

Objective-C

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

[FIRApp configure];

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

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

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

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

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

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

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

צילום מסך של דף המדדים App Check

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

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

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

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

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

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

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

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

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

פונקציות ענן

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

{
  "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. אפשר אכיפה

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

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

כדי לאפשר אכיפה של מסד נתונים בזמן אמת ואחסון ענן:

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

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

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

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

פונקציות ענן

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