Menggunakan App Check untuk mengamankan Navigation SDK for iOS
Firebase App Check memberikan perlindungan untuk panggilan dari aplikasi Anda ke Google Maps Platform dengan memblokir traffic yang berasal dari sumber selain aplikasi sah Anda. Hal ini dilakukan dengan meminta evaluasi keaslian aplikasi atau perangkat dari penyedia pengesahan seperti App Attest. Saat mengintegrasikan aplikasi dengan App Check, Anda menambahkan perlindungan terhadap permintaan berbahaya dan tidak sah, yang pada gilirannya melindungi penagihan Anda dari tagihan yang tidak sah. App Check juga meningkatkan kualitas pelaporan gangguan real-time secara signifikan dalam ekosistem aplikasi armada Anda, sehingga menguntungkan semua pengemudi yang menggunakan aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Pelaporan gangguan.
Mengapa menggunakan App Check?
App Check melindungi dua area berbeda dari Navigation SDK for iOS: fungsi navigasi utama dan pelaporan gangguan.
Navigasi
App Check membantu memblokir permintaan Navigation SDK for iOS utama dari sumber yang berbahaya atau tidak sah. Hal ini secara langsung menguntungkan Anda dengan melindungi proyek Anda dari penipuan penagihan dan kehabisan kuota.
Pelaporan gangguan
App Check sangat direkomendasikan jika aplikasi Anda mendukung kemampuan pelaporan dan pemungutan suara gangguan real-time. Mengaktifkan App Check memastikan pengemudi Anda mendapatkan rute paling akurat yang memperhitungkan semua masukan real-time.
Mengapa App Check penting untuk pelaporan:
- Batang kepercayaan tinggi untuk penutupan: Peristiwa yang memengaruhi rute, seperti penutupan jalan, dapat mengubah perilaku pemilihan rute secara signifikan untuk semua pengemudi. Untuk melindungi peta dari potensi vandalisme, spam, atau pelaporan yang tidak akurat, infrastruktur moderasi Google untuk gangguan penutupan jalan mengandalkan sinyal integritas aplikasi dan perangkat yang kuat.
- Bagaimana App Check memvalidasi laporan: Laporan dan suara pengguna yang dikirim dari Navigation SDK untuk iOS menyertakan token App Check, yang digunakan oleh backend Google untuk memvalidasi keabsahan umpan balik, meningkatkan tingkat kepercayaannya, dan memungkinkannya untuk dievaluasi dampaknya pada peta secara langsung.
- Dampak dari pengabaian Pemeriksaan Aplikasi: Laporan yang dikirimkan tanpa token Pemeriksaan Aplikasi yang valid dievaluasi berdasarkan model kepercayaan yang lebih rendah dan mungkin hanya diproses sebagai sinyal diam. Ini berarti bahwa meskipun pengguna Anda masih dapat melaporkan dan memberikan suara, laporan mereka cenderung tidak terlihat di peta atau memengaruhi rute pengemudi lain dan akan memerlukan validasi tambahan.
Apakah App Check cocok untuk saya?
Pemeriksaan Aplikasi direkomendasikan dalam sebagian besar kasus; namun, Pemeriksaan Aplikasi tidak diperlukan atau tidak didukung dalam skenario berikut:
- Aplikasi pribadi atau eksperimental: Jika aplikasi Anda tidak dapat diakses secara publik, App Check tidak diperlukan.
- Perangkat yang disusupi: Penyedia pengesahan yang direkomendasikan mencegah Navigation SDK for iOS berjalan di perangkat yang tidak tepercaya, seperti ponsel yang di-root atau di-jailbreak. Untuk mendukung perangkat ini, deploy penyedia pengesahan kustom.
Ringkasan langkah-langkah penerapan
Secara umum, Anda akan mengikuti langkah-langkah berikut untuk mengintegrasikan aplikasi dengan App Check:
- Tambahkan Firebase ke aplikasi Anda.
- Tambahkan library App Check dan lakukan inisialisasi App Check.
- Tambahkan penyedia token. Langkah ini memanggil penyedia pengesahan pilihan Anda untuk memverifikasi integritas perangkat atau aplikasi.
- Lakukan inisialisasi Navigation API dan App Check API.
- Aktifkan proses debug. Hal ini berguna selama pengembangan atau di lingkungan continuous integration (CI).
- Pantau permintaan aplikasi Anda sebelum mengaktifkan penegakan. Dengan begitu, Anda dapat menerapkan App Check dengan lancar tanpa mengganggu pengguna.
Pertimbangan saat merencanakan integrasi App Check
- Kuota Penyedia Pengesahan: Penyedia pengesahan yang kami rekomendasikan, yaitu DeviceCheck atau App Attest, tunduk pada kuota dan batasan yang ditetapkan oleh Apple.
- Latensi Startup: Dalam sebagian besar situasi, pengguna Anda tidak akan mengalami latensi selama penggunaan rutin, karena token App Check di-cache di perangkat. Sistem secara otomatis memperbarui token Pemeriksaan Aplikasi di latar belakang sebelum kedaluwarsa untuk menjaga kinerja yang lancar. Namun, jika token App Check yang valid tidak ada, pengguna aplikasi Anda akan mengalami beberapa latensi saat startup. Sebagai contoh, latensi ini terjadi selama proses cold start ketika token yang tersimpan dalam cache telah kedaluwarsa atau hilang.
- TTL token: Time to live (TTL) menentukan durasi validitas token App Check sebelum perlu di-refresh. Anda dapat mengonfigurasi durasi ini dari 30 menit hingga 7 hari di Firebase console. Durasi 1 jam direkomendasikan sebagai dasar pengukuran yang aman, tetapi SDK otomatis mencoba refresh di latar belakang dengan durasi sekitar setengah dari durasi TTL. Untuk mengetahui petunjuk konsol langkah demi langkah, lihat dokumentasi Firebase App Check.
Integrasikan aplikasi Anda dengan App Check.
Prasyarat dan persyaratan
- Aplikasi dengan Navigation SDK for iOS versi 11.0 atau yang lebih baru terinstal.
- ID paket aplikasi.
- ID Tim Anda dari tab Membership di konsol Apple Developer Anda.
- Jika Anda berencana menggunakan DeviceCheck, file kunci pribadi dan ID kunci Anda.
- Anda harus menjadi pemilik aplikasi di konsol Google Cloud.
- Project ID aplikasi Anda dari Konsol Google Cloud.
Langkah 1: Tambahkan Firebase ke aplikasi Anda
Ikuti petunjuk dalam dokumentasi developer Firebase untuk menambahkan Firebase ke aplikasi Anda. Tambahkan file GoogleService-Info.plist Anda, tanpa diubah, ke tingkat root project Anda.
Di dalam file AppDelegate Anda, impor modul-modul berikut:
Swift
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
Langkah 2: Tambahkan library App Check dan inisialisasi App Check
Firebase memberikan petunjuk untuk setiap penyedia pengesahan default. Petunjuk ini menunjukkan cara menyiapkan project Firebase dan menambahkan library App Check ke aplikasi Anda. Ikuti contoh kode yang diberikan untuk menginisialisasi App Check.
- Ikuti petunjuk Firebase untuk menambahkan library App Check:
- Lakukan inisialisasi App Check di
AppDelegateAnda:- Jika Anda menggunakan App Attest, buat penerapan
AppCheckProviderFactorydan daftarkan sebelum memanggilFirebaseApp.configure():Swift
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- Jika Anda menggunakan DeviceCheck, tetapkan pabrik menggunakan kode berikut:
Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Jika Anda menggunakan App Attest, buat penerapan
Langkah 3: Tambahkan penyedia token
Buat file bernama AppCheckTokenProvider (atau, jika Anda menggunakan Objective-C, dua file bernama AppCheckTokenProvider.h dan AppCheckTokenProvider.m) di tingkat root aplikasi Anda.
Class ini harus sesuai dengan protokol GMSAppCheckTokenProvider dan menerapkan metode fetchAppCheckTokenWithCompletion.
Swift
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
Objective-C
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
Langkah 4: Lakukan inisialisasi Navigation dan App Check API
Lakukan inisialisasi Navigation SDK for iOS (menggunakan GMSServices) dan daftarkan instance penyedia token Anda dengan melakukan transmisi handle layanan buram bersama ke GMSServices:
Swift
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
Objective-C
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
Langkah 5: Aktifkan proses debug (opsional)
Setelah App Check diterapkan untuk Navigation SDK for iOS, fitur aplikasi Anda yang bergantung pada Navigation SDK for iOS tidak akan berjalan di simulator atau dari lingkungan continuous integration (CI) karena lingkungan ini tidak memenuhi syarat sebagai perangkat yang valid. Untuk menjalankan aplikasi di lingkungan ini selama pengembangan dan pengujian, Anda perlu membuat build debug aplikasi yang menggunakan penyedia debug App Check, bukan penyedia pengesahan produksi.
- Konfigurasi factory penyedia debug di
AppDelegate:Swift
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Aktifkan logging di project Xcode Anda, luncurkan aplikasi, dan temukan token debug lokal di log konsol.
- Salin dan tambahkan token debug ini ke Firebase Console. Untuk mengetahui detail selengkapnya, lihat dokumentasi penyedia debug Firebase App Check.
Langkah 6: Pantau permintaan aplikasi Anda dan putuskan penegakan
Sebelum mengaktifkan penerapan, pantau permintaan aplikasi Anda untuk memastikan bahwa Anda tidak akan mengganggu pengguna yang sah.
- Buka layar metrik App Check di Firebase console untuk melihat persentase traffic terverifikasi versus tidak terverifikasi.
- Setelah Anda yakin bahwa sebagian besar traffic Anda diverifikasi dan pengguna yang sah telah mengupdate ke versi aplikasi yang berisi penerapan App Check, aktifkan penerapan.
- Setelah penerapan diaktifkan, App Check akan menolak semua traffic tanpa token App Check yang valid.