API anahtarınızın güvenliğini sağlamak için Uygulama Kontrolü'nü kullanma
Firebase Uygulama Kontrolü, meşru uygulamalar dışındaki kaynaklardan gelen trafiği engelleyerek uygulamanızdan Google Haritalar Platformu'na yapılan çağrılar için koruma sağlar. Bunu, App Attest gibi bir doğrulama sağlayıcıdan jeton olup olmadığını kontrol ederek yapar. Uygulamalarınızı Uygulama Kontrolü ile entegre etmek, kötü amaçlı isteklere karşı koruma sağlar. Böylece yetkisiz API çağrıları için sizden ücret alınmaz.
App Check benim için uygun mu?
Uygulama Denetleme çoğu durumda önerilir ancak aşağıdaki durumlarda Uygulama Denetleme gerekli değildir veya desteklenmez:
- Orijinal Places SDK'sını kullanıyorsanız. Uygulama Denetleme yalnızca Yerler SDK'sı (Yeni) için desteklenir.
- Özel veya deneysel uygulamalar. Uygulamanıza herkes erişemiyorsa Uygulama Kontrolü'ne gerek yoktur.
- Uygulamanız yalnızca sunucudan sunucuya kullanılıyorsa Uygulama Denetimi gerekli değildir. Ancak GMP ile iletişim kuran sunucu herkese açık istemciler (mobil uygulamalar gibi) tarafından kullanılıyorsa GMP yerine bu sunucuyu korumak için Uygulama Denetimi'ni kullanmayı düşünebilirsiniz.
- App Check'in önerdiği doğrulama sağlayıcıları, doğrulama sağlayıcınız tarafından güvenliği ihlal edilmiş veya güvenilir olmadığı kabul edilen cihazlarda çalışmaz. Bu tür cihazları desteklemeniz gerekiyorsa özel bir doğrulama hizmeti dağıtabilirsiniz. Daha fazla bilgi için talimatları inceleyin.
Uygulama adımlarına genel bakış
Uygulamanızı App Check ile entegre etmek için uygulamanız gereken adımlar özet olarak aşağıda verilmiştir:
- Firebase'i uygulamanıza ekleyin.
- App Check kitaplığını ekleyin ve başlatın.
- Jeton sağlayıcıyı uygulamanıza ekleyin.
- Places ve App Check API'lerini başlatın.
- Hata ayıklamayı etkinleştirin.
- Uygulama isteklerinizi izleyin ve yaptırım konusunda karar verin.
App Check ile entegrasyon yaptıktan sonra Firebase konsolunda arka uç trafik metriklerini görebilirsiniz. Bu metrikler, isteklerin geçerli bir Uygulama Kontrolü jetonu içerip içermediklerine göre dökümünü sağlar. Daha fazla bilgi için Firebase Uygulama Kontrolü dokümanlarını inceleyin.
Çoğu isteğin meşru kaynaklardan geldiğinden ve kullanıcıların uygulamanızın, Uygulama Denetleme'yi uygulamanızı içeren en son sürümüne güncellendiğinden emin olduğunuzda yaptırımı etkinleştirebilirsiniz. Zorunlu kılma etkinleştirildikten sonra Uygulama Kontrolü, geçerli bir Uygulama Kontrolü jetonu olmayan tüm trafiği reddeder.
App Check entegrasyonunu planlarken dikkat edilmesi gerekenler
Entegrasyonunuzu planlarken göz önünde bulundurmanız gereken bazı noktalar:
Önerdiğimiz Cihaz Kontrolü veya Uygulama Onayı doğrulama sağlayıcıları, Apple tarafından belirlenen kotalara ve sınırlamalara tabidir.
Özel bir doğrulama sağlayıcı kullanmayı seçebilirsiniz ancak bu gelişmiş bir kullanım alanıdır. Daha fazla bilgi için Firebase Uygulama Kontrolü dokümanlarını inceleyin.
-
Uygulamanızın kullanıcıları, uygulamayı başlatırken biraz gecikme yaşayabilir. Ancak daha sonra, arka planda düzenli olarak yeniden doğrulama yapılır ve kullanıcılar artık gecikme yaşamaz. Başlangıçtaki gecikmenin tam miktarı, seçtiğiniz doğrulama sağlayıcıya bağlıdır.
Uygulama Kontrolü jetonunun geçerlilik süresi (geçerlilik süresi veya TTL), yeniden doğrulamaların sıklığını belirler. Bu süre Firebase konsolunda yapılandırılabilir. Yeniden doğrulama, TTL'nin yaklaşık yarısı geçtiğinde gerçekleşir. Daha fazla bilgi için doğrulama sağlayıcınızın Firebase dokümanlarına bakın.
Uygulamanızı App Check ile entegre etme
Ön koşullar ve şartlar
- Yerler SDK'sının 9.2 veya sonraki bir sürümünün yüklü olduğu bir uygulama.
- Uygulamanın paket kimliği.
- Apple Member Center'daki Üyelik bölümündeki ekip kimliğiniz.
- Cihaz Kontrolü'nü kullanmayı planlıyorsanız özel anahtar dosyanız ve anahtar kimliğiniz.
- Cloud Console'da uygulamanın sahibi olmanız gerekir.
- Cloud Console'daki uygulamanın proje kimliğine ihtiyacınız vardır.
1. adım: Firebase'i uygulamanıza ekleyin
Firebase'i uygulamanıza eklemek için Firebase geliştirici dokümanlarında yer alan talimatları uygulayın.
Uygulamanızı kaydettiğinizde GoogleService-Info.plist
yapılandırma dosyası alırsınız. Bu dosyayı değiştirilmemiş şekilde uygulamanızın kök seviyesine ekleyin.
Swift
import FirebaseCore import FirebaseAppCheck import GooglePlaces
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
2. adım: App Check kitaplığını ekleyin ve App Check'i başlatın
Firebase, her varsayılan doğrulama sağlayıcısı için talimatlar sağlar. Bu talimatlarda, Firebase projesi oluşturma ve App Check kitaplığını uygulamanıza ekleme işlemleri gösterilmektedir. App Check'i başlatmak için verilen kod örneklerini uygulayın.
- Uygulama Kontrolü kitaplığını eklemek için Firebase talimatlarını uygulayın:
- Uygulama Kontrolü'nü başlatın.
- App Attest kullanıyorsanız App Attest ile ilgili Firebase geliştirici belgelerini uygulayın.
AppCheckProviderFactory
uygulamasını oluşturmak veAppDelegate
dosyanıza eklemek için Firebase Uygulama Kontrolü talimatlarını uygulayın.Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Cihaz Kontrolü'nü kullanıyorsanız
AppDelegate
dosyanıza aşağıdakileri ekleyin:Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- App Attest kullanıyorsanız App Attest ile ilgili Firebase geliştirici belgelerini uygulayın.
3. Adım: Jeton sağlayıcıyı ekleyin
Uygulamanızın kök düzeyinde AppCheckTokenProvider
adlı bir dosya (veya Objective-C kullanıyorsanız AppCheckTokenProvider.h
ve AppCheckTokenProvider.m
adlı iki dosya) oluşturun.
Aşağıdaki içe aktarma ifadelerini ve sınıf tanımını ekleyin:
Swift
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlaces class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Objective-C
// AppCheckTokenProvider.h @import Foundation; @import GooglePlaces; @interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider> @end // AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" @import FirebaseAppCheck; @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
4. Adım: Places ve App Check API'lerini başlatın
AppDelegate
dosyanızda Places API'yi başlatın:Swift
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- Ardından, App Check API'yi başlatın:
Swift
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Objective-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
5. Adım: Hata ayıklamayı etkinleştirin (isteğe bağlı)
Uygulamanızı yerel olarak geliştirip test etmek veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız geçerli App Check jetonları almak için hata ayıklama gizlisi kullanan uygulamanızın hata ayıklama derlemesini oluşturabilirsiniz. Bu sayede hata ayıklama derlemenizde gerçek doğrulama sağlayıcıları kullanmaktan kaçınabilirsiniz.
Uygulamanızı Simülatör'de veya test cihazında test etmek için:
App Check hata ayıklama sağlayıcı fabrikasını oluşturup ayarlayın.
Bu kod örneği hem hata ayıklama hem de üretim senaryolarını ele alır:Swift
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Xcode projenizde günlük kaydını etkinleştirin, uygulamayı başlatın ve günlükte yerel hata ayıklama jetonunu bulun.
- Bu jetonu Firebase konsoluna ekleyin.
- Daha fazla bilgi ve talimat için Uygulama Denetleme dokümanlarına bakın.
Uygulamanızı bir CI ortamında çalıştırmak için:
- Firebase konsolunda bir hata ayıklama jetonu oluşturun ve bu jetonu CI sisteminizin güvenli anahtar deposuna ekleyin.
- Xcode'da, test şemanıza
FIRAAppCheckDebugToken
adlı ve$(APP_CHECK_DEBUG_TOKEN)
(veya benzer bir ifade) değerine sahip bir ortam değişkeni ekleyin. - Hata ayıklama jetonunu CI test komut dosyanızda ortam olarak iletin
App Check hata ayıklama sağlayıcı fabrikasını oluşturup ayarlayın.
Bu kod örneği hem hata ayıklama hem de üretim senaryolarını ele alır:Swift
#if targetEnvironment(ci) let providerFactory = AppCheckDebugProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == ci) { FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Daha fazla bilgi ve talimat için Uygulama Denetleme dokümanlarına bakın.
6. adım: Uygulama isteklerinizi izleyin ve yaptırım kararı alın
Yaptırıma başlamadan önce, uygulamanızın meşru kullanıcılarını rahatsız etmeyeceğinden emin olmak istersiniz. Bunu yapmak için uygulamanızın trafiğinin ne kadarının doğrulanmış, güncel olmayan veya meşru olmadığını görmek üzere Uygulama Kontrolü metrik ekranını ziyaret edin. Trafiğinizin büyük kısmının doğrulandığını gördükten sonra yaptırımı etkinleştirebilirsiniz.
Daha fazla bilgi ve talimat için Firebase Uygulama Kontrolü dokümanlarını inceleyin.