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

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

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

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

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

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

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

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

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

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

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

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

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 לפני שתשתמשו ב-SDK אחר של Firebase.

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

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