Bu sayfada, özel App Check sağlayıcınızı kullanarak bir Apple uygulamasında App Check'ü nasıl etkinleştireceğiniz gösterilmektedir. App Check seçeneğini etkinleştirdiğinizde, projenizin Firebase kaynaklarına yalnızca uygulamanızın erişebilmesini sağlarsınız.
App Check'ü yerleşik sağlayıcılarla kullanmak istiyorsanız App Check ile Uygulama Attest ve App Check ile DeviceCheck belgelerine bakın.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Apple projenize ekleyin.
Özel App Check sağlayıcınızın sunucu tarafı mantığını uygulayın.
1. App Check kitaplığını uygulamanıza ekleme
App Check bağımlılığını projenizin
Podfile
dosyasına ekleyin:pod 'FirebaseAppCheck'
Alternatif olarak Swift Package Manager'ı da kullanabilirsiniz.
Ayrıca, bağımlı olduğunuz Firebase hizmeti istemci kitaplıklarının en son sürümünü kullandığınızdan emin olun.
pod install
dosyasını çalıştırın ve oluşturulan.xcworkspace
dosyasını açın.
2. App Check protokollerini uygulama
Öncelikle AppCheckProvider
ve AppCheckProviderFactory
protokollerini uygulayan sınıflar oluşturmanız gerekir.
AppCheckProvider
sınıfınızda, özel App Check sağlayıcınızın kimlik doğrulama kanıtı olarak ihtiyaç duyduğu tüm bilgileri toplayan ve App Check jetonu karşılığında jeton edinme hizmetinize gönderen bir getToken(completion:)
yöntemi olmalıdır. App Check SDK'sı jeton önbelleğe alma işlemini gerçekleştirir. Bu nedenle, getToken(completion:)
uygulamanızda her zaman yeni bir jeton alın.
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
Ayrıca, AppCheckProvider
uygulamanızın örneklerini oluşturan bir AppCheckProviderFactory
sınıfı da uygulayın:
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 başlatılıyor
Uygulama temsilcinize veya uygulama başlatıcınıza aşağıdaki ilk kullanıma hazırlama kodunu ekleyin:
Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Sonraki adımlar
App Check kitaplığı uygulamanıza yüklendikten sonra güncellenmiş uygulamayı kullanıcılarınıza dağıtmaya başlayın.
Güncellenen istemci uygulaması, Firebase'e gönderdiği her istekle birlikte App Check jetonları göndermeye başlar. Ancak Firebase konsolunun App Check bölümünde yaptırımı etkinleştirene kadar Firebase ürünleri, jetonların geçerli olmasını gerektirmez.
Metrikleri izleme ve yaptırımı etkinleştirme
Ancak yaptırımı etkinleştirmeden önce, bu işlemin mevcut meşru kullanıcılarınızın çalışmasını engellemeyeceğinden emin olmanız gerekir. Diğer yandan, uygulama kaynaklarınızın şüpheli bir şekilde kullanıldığını görüyorsanız yaptırımı daha erken etkinleştirmek isteyebilirsiniz.
Bu kararı vermenize yardımcı olması için kullandığınız hizmetlerle ilgili App Check metriklerini inceleyebilirsiniz:
- Data Connect, Vertex AI in Firebase, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, iOS için Google Kimliği, Maps JavaScript API ve Places API (Yeni) için App Check istek metriklerini izleyin.
- Cloud Functions için App Check istek metriklerini izleyin.
App Check yaptırımını etkinleştirme
App Check'ün kullanıcılarınızı nasıl etkileyeceğini anladıktan ve devam etmeye hazır olduğunuzda App Check yaptırımını etkinleştirebilirsiniz:
- Data Connect, Vertex AI in Firebase, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, iOS için Google Kimliği, Maps JavaScript API ve Places API (Yeni) için App Check yaptırımını etkinleştirin.
- Cloud Functions için App Check yaptırımını etkinleştirin.
Hata ayıklama ortamlarında App Check kullanma
Uygulamanızı App Check'e kaydettikten sonra, uygulamanızı App Check'in normalde geçerli olarak sınıflandırmayacağı bir ortamda (ör. geliştirme sırasında bir simülatörde) veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız gerçek bir doğrulama sağlayıcısı yerine App Check hata ayıklama sağlayıcısını kullanan uygulamanızın hata ayıklama derlemesini oluşturabilirsiniz.
App Check'i Apple platformlarında hata ayıklama sağlayıcıyla kullanma başlıklı makaleyi inceleyin.