این صفحه به شما نشان میدهد که چگونه App Check را در یک برنامه Apple بااستفاده از ارائهدهنده سفارشی App Check فعال کنید. وقتی App Check را فعال میکنید، کمک میکنید تا مطمئن شوید فقط برنامه شما میتواند به منابع Firebase پروژهتان دسترسی داشته باشد.
اگر میخواهید از App Check با ارائهدهندگان داخلی استفاده کنید، اسناد مربوط به App Check با App Attest و App Check با DeviceCheck را ببینید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Apple خود اضافه کنید.
منطق سمت سرور ارائهدهنده App Check سفارشیتان را پیادهسازی کنید.
۱. کتابخانه App Check را به برنامهتان اضافه کنید
از Swift Package Manager برای نصب و مدیریت وابستگیهای Firebase استفاده کنید.
در Xcode، درحالیکه پروژه برنامهتان باز است، به File > Add Packages بروید، مخزن کیت توسعه نرمافزار پلاتفرمهای Firebase Apple را اضافه کنید (
https://github.com/firebase/firebase-ios-sdk)، و کتابخانه FirebaseAppCheck را انتخاب کنید.
۲. اجرای پروتکلهای App Check
ابتدا باید کلاسهایی ایجاد کنید که پروتکلهای AppCheckProvider و
AppCheckProviderFactory را پیادهسازی کنند.
کلاس AppCheckProvider شما باید روش getToken(completion:) داشته باشد که هر اطلاعاتی را که ارائهدهنده App Check سفارشی شما بهعنوان مدرک اصالت نیاز دارد جمعآوری کند و آن را در ازای یک کد App Check به سرویس دریافت کد شما ارسال کند. کیت توسعه نرمافزار App Check ذخیره مؤقت کردن کد را مدیریت میکند، بنابراین همیشه در پیادهسازی 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
۳. مقداردهی اولیه 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 را برای Firebase AI Logic، SQL Connect، Realtime Database، Cloud Firestore، Cloud Storage، Authentication، Google Identity for iOS، Maps JavaScript API، و Places API (New) پایش کنید.
- سنجههای درخواست 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 برای iOS، Maps JavaScript API، و Places API (جدید).
- اجرای App Check را برای Cloud Functions فعال کنید.
استفاده از App Check در محیطهای اشکالزدایی
اگر پساز ثبت برنامه برای App Check، بخواهید برنامهتان را در محیطی اجرا کنید که App Check معمولاً آن را معتبر طبقهبندی نمیکند، مثلاً شبیهساز درطول توسعه، یا از محیط ادغام پیوسته (CI)، میتوانید ساخت اشکالزدایی برای برنامهتان ایجاد کنید که بهجای ارائهدهنده گواهی واقعی از ارائهدهنده اشکالزدایی App Check استفاده میکند.
استفاده از App Check با ارائهدهنده اشکالزدایی در پلاتفرمهای Apple را ببینید.