Bu sayfada, özel App Check sağlayıcınızı kullanarak bir Apple uygulamasında App Check özelliğini 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ğlayabilirsiniz.
Yerleşik sağlayıcılarla App Check kullanmak istiyorsanız App Check ile Uygulama Onayı ve App Check ile DeviceCheck dokümanlarına 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 ekleyin
App Check bağımlılığını projenizin
Podfile
dosyasına ekleyin:pod 'FirebaseAppCheck'
Alternatif olarak Swift Package Manager'ı da kullanabilirsiniz.
Ayrıca, bağlı olduğunuz Firebase hizmeti istemci kitaplıklarının en son sürümünü kullandığınızdan emin olun.
pod install
komutunu çalıştırın ve oluşturulan.xcworkspace
dosyasını açın.
2. App Check protokollerini uygulayın
Ö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 gerektirdiği bilgileri toplayan ve bunları 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 almayı işler. 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, AppCheckProviderFactory
sınıfını uygulayarak AppCheckProvider
uygulamanızın örneklerini oluşturun:
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
Aşağıdaki başlatma kodunu uygulama temsilcinize veya uygulama başlatıcınıza 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 yaptığı her istekle birlikte App Check jetonları göndermeye başlar. Ancak Firebase ürünleri, Firebase konsolunun App Check bölümünde zorunlu kılmayı etkinleştirene kadar jetonların geçerli olmasını gerektirmez.
Metrikleri izleme ve yaptırım uygulama
Ancak zorunlu kılmayı etkinleştirmeden önce, bu işlemin mevcut meşru kullanıcılarınızın hizmetten yararlanması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 hizmetlerin App Check metriklerine bakabilirsiniz:
- Data Connect, Firebase AI Logic, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, 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 zorunlu kılmayı etkinleştirme
App Check özelliğinin kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda App Check zorunluluğunu etkinleştirebilirsiniz:
- App Check zorunlu kılma özelliğini Data Connect, Firebase AI Logic, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API ve Places API (Yeni) için etkinleştirin.
- Cloud Functions için App Check zorunlu kılma özelliğini etkinleştirin.
Hata ayıklama ortamlarında App Check kullanma
Uygulamanızı App Check için kaydettikten sonra, uygulamanızı normalde App Check tarafından geçerli olarak sınıflandırılmayacak bir ortamda (ör. geliştirme sırasında simülatörde veya sürekli entegrasyon (CI) ortamında) çalıştırmak istiyorsanız uygulamanızın gerçek bir onay sağlayıcı yerine App Check hata ayıklama sağlayıcısını kullanan bir hata ayıklama sürümünü oluşturabilirsiniz.
Apple platformlarında hata ayıklama sağlayıcısıyla App Check kullanma başlıklı makaleyi inceleyin.