תחילת השימוש ב-App Check עם App Attest בפלטפורמות של Apple

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

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

כדי להשתמש ב-App Check עם ספק מותאם אישית, יש לעיין במאמר להטמיע ספק App Check בהתאמה אישית.

1. הגדרת פרויקט Firebase

  1. כדי להשתמש באימות אפליקציה, צריך להשתמש ב-Xcode מגרסה 12.5 ואילך.

  2. מוסיפים את Firebase לפרויקט שלכם ב-Apple, אם עדיין לא עשיתם זאת.

  3. עליך לרשום את האפליקציות שלך לשימוש ב-App Check אצל ספק האימות של האפליקציה ב הקטע App Check של מסוף Firebase.

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

  4. אופציונלי: בהגדרות הרישום של האפליקציה, קובעים את אורך חיי המשתמש (TTL) ל-App Check אסימונים שהונפקו על ידי הספק. אפשר להגדיר את ה-TTL לכל ערך בין 30 דקות ל-7 ימים. כשמשנים את הערך הזה, חשוב לזכור את הפשרות הבאות:

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

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

2. הוספה של הספרייה App Check לאפליקציה

  1. מוסיפים את יחסי התלות של App Check ל-Podfile של הפרויקט:

    pod 'FirebaseAppCheck'

    לחלופין, אפשר להשתמש ב-Swift Package Manager.

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

  2. מריצים את pod install ופותחים את הקובץ .xcworkspace שנוצר.

  3. ב-Xcode, מוסיפים את היכולת App Attest לאפליקציה.

  4. בקובץ .entitlements של הפרויקט, מגדירים את סביבת App Attest בתור production.

3. אתחול של App Check

עליך לאתחל את App Check לפני שמשתמשים בכל Firebase אחר ערכות SDK.

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

לדוגמה, אם יש לך רק משתמשים ב-iOS 14 ואילך, תמיד אפשר יצירת AppAttestProvider אובייקטים:

Swift

הערה: מוצר Firebase הזה לא זמין ביעדים של WatchOS.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Objective-C

הערה: מוצר Firebase הזה לא זמין ביעדים של WatchOS.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

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

@end

לחלופין, אפשר ליצור אובייקטים מסוג AppAttestProvider ב-iOS 14 ואילך, ולנפות חזרה אל DeviceCheckProvider בגרסאות קודמות:

Swift

הערה: מוצר Firebase הזה לא זמין ביעדים של watchOS.

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

Objective-C

הערה: מוצר Firebase הזה לא זמין ביעדים של WatchOS.

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

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

Swift

הערה: מוצר Firebase הזה לא זמין ביעדים של watchOS.

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

FirebaseApp.configure()

Objective-C

הערה: מוצר Firebase הזה לא זמין ביעדים של watchOS.

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

[FIRApp configure];

השלבים הבאים

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

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

מעקב אחרי המדדים והפעלת האכיפה

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

כדי לעזור לכם לקבל את ההחלטה הזו, תוכלו לעיין במדדים של App Check בשירותים שבהם אתם משתמשים:

הפעלת האכיפה של App Check

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

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

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

אפשר לקרוא מידע נוסף בקטע שימוש ב-App Check עם ספק ניפוי הבאגים בפלטפורמות של Apple.