בדף הזה מוסבר איך להפעיל את App Check באפליקציית Apple באמצעות ספק App Check מותאם אישית. כשמפעילים את App Check, אפשר לוודא שרק האפליקציה שלכם יכולה לגשת למשאבי Firebase של הפרויקט.
אם רוצים להשתמש ב-App Check עם הספקים המובנים, אפשר לעיין במסמכים בנושא App Check עם App Attest וApp Check עם DeviceCheck.
לפני שמתחילים
אם עדיין לא עשיתם את זה, מוסיפים את Firebase לפרויקט Apple.
1. הוספת ספריית App Check לאפליקציה
מוסיפים את יחסי התלות של App Check לקובץ
Podfile
של הפרויקט:pod 'FirebaseAppCheck'
אפשר גם להשתמש ב-Swift Package Manager.
בנוסף, חשוב לוודא שאתם משתמשים בגרסה העדכנית ביותר של כל ספריות הלקוח של שירות Firebase שאתם מסתמכים עליהן.
מריצים את הפקודה
pod install
ופותחים את הקובץ.xcworkspace
שנוצר.
2. יישום פרוטוקולי App Check
קודם כול, צריך ליצור מחלקות שמטמיעות את הפרוטוקולים AppCheckProvider
ו-AppCheckProviderFactory
.
למחלקת AppCheckProvider
צריך להיות מתודה getToken(completion:)
שאוספת את כל המידע שספק App Check המותאם אישית דורש כהוכחה לאותנטיות, ושולחת אותו לשירות להשגת אסימונים בתמורה לאסימון App Check. App Check SDK מטפל בשמירת אסימונים במטמון, לכן תמיד צריך לקבל אסימון חדש בהטמעה של getToken(completion:)
.
Swift
class YourCustomAppCheckProvider: NSObject, AppCheckProvider { var app: FirebaseApp init(withFirebaseApp app: FirebaseApp) { self.app = app super.init() } func getToken() async throws -> AppCheckToken { let getTokenTask = Task { () -> AppCheckToken in // ... // Create AppCheckToken object. let exp = Date(timeIntervalSince1970: expirationFromServer) let token = AppCheckToken( token: tokenFromServer, expirationDate: exp ) if Date() > exp { throw NSError(domain: "ExampleError", code: 1, userInfo: nil) } return token } return try await getTokenTask.value } }
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
:
Swift
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
מוסיפים את קוד האתחול הבא לנציג האפליקציה או לאתחול האפליקציה:
Swift
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.
מעקב אחרי מדדים והפעלת אכיפה
עם זאת, לפני שמפעילים את האכיפה, חשוב לוודא שהפעולה הזו לא תשבש את הפעילות של משתמשים קיימים לגיטימיים. מצד שני, אם אתם רואים שימוש חשוד במשאבי האפליקציה, כדאי להפעיל את האכיפה מוקדם יותר.
כדי לקבל החלטה מושכלת, אפשר לעיין במדדים של App Check השירותים שבהם אתם משתמשים:
- מעקב אחרי מדדי בקשות של App Check Data Connect, Firebase AI Logic, 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 עבור Data Connect, Firebase AI Logic, 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), אתם יכולים ליצור גרסת debug של האפליקציה שמשתמשת בספק debug של App Check במקום בספק אימות אמיתי.
מידע נוסף זמין במאמר בנושא שימוש ב-App Check עם ספק ניפוי הבאגים בפלטפורמות של אפל.