בדף הזה מוסבר איך להפעיל את App Check באפליקציית Apple באמצעות ספק האימות המובנה של האפליקציה. כשמפעילים את App Check, עוזרים לוודא שרק האפליקציה שלכם יכולה לגשת למשאבי Firebase של הפרויקט. סקירה כללית של התכונה
App Check משתמש ב-App Attest כדי לוודא שהבקשות לשירותי Firebase מגיעות מהאפליקציה המקורית שלכם. נכון לעכשיו, App Check לא משתמש ב-App Attest כדי לנתח את הסיכון להונאה.
אם רוצים להשתמש ב-App Check עם ספק מותאם אישית משלכם, אפשר לעיין במאמר בנושא הטמעה של ספק App Check מותאם אישית.
1. הגדרת פרויקט Firebase
כדי להשתמש ב-App Attest, צריך Xcode בגרסה 12.5 ומעלה.
אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Apple.
במסוף Firebase, עוברים אל Security (אבטחה) > App Check (בדיקת אפליקציות).
בכרטיסייה אפליקציות, רושמים את האפליקציות לשימוש ב-App Check עם ספק אימות האפליקציות.
בדרך כלל צריך לרשום את כל האפליקציות בפרויקט, כי אחרי שמפעילים אכיפה של מוצר Firebase, רק אפליקציות רשומות יכולות לגשת למשאבי ה-Backend של המוצר.
אופציונלי: מגדירים את אורך החיים (TTL) של האסימון.
בהגדרות רישום האפליקציה, מגדירים אורך חיים (TTL) מותאם אישית לטוקנים של App Check שהונפקו על ידי הספק. אפשר להגדיר את ה-TTL לכל ערך בין 30 דקות ל-7 ימים. כשמשנים את הערך הזה, חשוב לשים לב לשיקולים הבאים:
- אבטחה: ערכי TTL קצרים יותר מספקים אבטחה חזקה יותר, כי הם מצמצמים את חלון הזמן שבו תוקף יכול לנצל לרעה אסימון שדלף או שורטט.
- ביצועים: ערכי TTL קצרים יותר אומרים שהאפליקציה תבצע אימות בתדירות גבוהה יותר. תהליך אימות האפליקציה מוסיף זמן אחזור לבקשות רשת בכל פעם שהוא מתבצע, ולכן ערך TTL קצר יכול להשפיע על ביצועי האפליקציה.
- מכסה ועלות: ערכי TTL קצרים ואימות חוזר תכוף מנצלים את המכסה מהר יותר, ובשירותים בתשלום, עלולים לעלות יותר. מכסות ומגבלות
ערך ברירת המחדל של TTL הוא שעה אחת, והוא סביר לרוב האפליקציות. הערה: הספרייה App Check מרעננת את האסימונים בערך בחצי מהזמן של ה-TTL.
2. הוספת ספריית App Check לאפליקציה
משתמשים ב-Swift Package Manager כדי להתקין ולנהל את יחסי התלות של Firebase.
ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File (קובץ) > Add Packages (הוספת חבילות), מוסיפים את מאגר Firebase Apple platforms SDK (
https://github.com/firebase/firebase-ios-sdk) ובוחרים בספרייה FirebaseAppCheck.ב-Xcode, מוסיפים את היכולת App Attest לאפליקציה.
בקובץ
.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, Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API ו-Places API (חדש).
- מעקב אחרי מדדי בקשות של App Check עבור Cloud Functions.
הפעלת האכיפה של App Check
אחרי שתבינו איך App Check ישפיע על המשתמשים שלכם ותהיו מוכנים להמשיך, תוכלו להפעיל את האכיפה של App Check:
- הפעלת App Check אכיפה עבור Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API ו-Places API (חדש).
- הפעלת אכיפה של App Check עבור Cloud Functions.
שימוש ב-App Check בסביבות ניפוי באגים
אם אחרי שרשמתם את האפליקציה שלכם ל-App Check אתם רוצים להריץ אותה בסביבה ש-App Check בדרך כלל לא מסווגת כתקפה, כמו סימולטור במהלך פיתוח או מסביבת שילוב רציף (CI), אתם יכולים ליצור גרסת ניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות אמיתי.
מידע נוסף זמין במאמר בנושא שימוש ב-App Check עם ספק אימות לצורכי ניפוי באגים בפלטפורמות של אפל.