Sử dụng tính năng Kiểm tra ứng dụng để bảo mật Navigation SDK cho iOS
Kiểm tra ứng dụng Firebase bảo vệ các lệnh gọi từ ứng dụng của bạn đến Google Maps Platform bằng cách chặn lưu lượng truy cập đến từ các nguồn không phải là ứng dụng hợp pháp của bạn. Để làm việc này, ứng dụng sẽ yêu cầu nhà cung cấp dịch vụ chứng thực (chẳng hạn như App Attest) đánh giá tính xác thực của ứng dụng hoặc thiết bị. Khi tích hợp ứng dụng với Kiểm tra ứng dụng, bạn sẽ tăng cường khả năng bảo vệ trước các yêu cầu độc hại và trái phép, từ đó bảo vệ thông tin thanh toán của bạn khỏi các khoản phí trái phép. Kiểm tra ứng dụng cũng cải thiện đáng kể báo cáo gián đoạn theo thời gian thực trong hệ sinh thái ứng dụng của đội xe, từ đó mang lại lợi ích cho tất cả tài xế sử dụng ứng dụng của bạn. Để biết thêm thông tin, hãy xem phần Báo cáo gián đoạn.
Tại sao nên sử dụng tính năng Kiểm tra ứng dụng?
Kiểm tra ứng dụng bảo vệ hai khu vực riêng biệt của SDK chỉ đường cho iOS: chức năng chỉ đường chính và báo cáo gián đoạn.
Di chuyển
Tính năng Kiểm tra ứng dụng giúp chặn các yêu cầu chính của Navigation SDK cho iOS từ các nguồn độc hại hoặc trái phép. Điều này trực tiếp mang lại lợi ích cho bạn bằng cách bảo vệ dự án của bạn khỏi hành vi lừa đảo qua giao dịch thanh toán và cạn kiệt hạn mức.
Báo cáo sự gián đoạn
Bạn nên sử dụng tính năng Kiểm tra ứng dụng nếu ứng dụng của bạn hỗ trợ tính năng báo cáo và bỏ phiếu về sự cố theo thời gian thực. Việc bật tính năng Kiểm tra ứng dụng đảm bảo tài xế của bạn được cung cấp những tuyến đường chính xác nhất, có tính đến tất cả ý kiến phản hồi theo thời gian thực.
Lý do Kiểm tra ứng dụng quan trọng đối với việc báo cáo:
- Ngưỡng tin cậy cao đối với việc đường bị đóng: Các sự kiện ảnh hưởng đến tuyến đường, chẳng hạn như đường bị đóng, có thể làm thay đổi đáng kể hành vi định tuyến của tất cả người lái xe. Để bảo vệ bản đồ khỏi hành vi phá hoại, nội dung rác hoặc báo cáo không chính xác, cơ sở hạ tầng kiểm duyệt của Google đối với các sự cố đóng đường dựa vào các tín hiệu mạnh mẽ về tính toàn vẹn của thiết bị và ứng dụng.
- Cách Kiểm tra ứng dụng xác thực báo cáo: Báo cáo và lượt bình chọn của người dùng được gửi từ SDK Điều hướng cho iOS bao gồm mã thông báo Kiểm tra ứng dụng. Mã thông báo này được phần phụ trợ của Google sử dụng để xác thực tính hợp pháp của ý kiến phản hồi, nâng cao mức độ tin cậy và cho phép đánh giá tác động của ý kiến phản hồi đó đối với bản đồ trực tiếp.
- Tác động của việc bỏ qua tính năng Kiểm tra ứng dụng: Các báo cáo được gửi mà không có mã thông báo Kiểm tra ứng dụng hợp lệ sẽ được đánh giá theo mô hình có độ tin cậy thấp hơn và có thể chỉ được xử lý dưới dạng tín hiệu thầm lặng. Điều này có nghĩa là mặc dù người dùng vẫn có thể báo cáo và bình chọn, nhưng báo cáo của họ ít có khả năng xuất hiện trên bản đồ hoặc ảnh hưởng đến tuyến đường của những người lái xe khác và sẽ cần được xác thực thêm.
Tính năng Kiểm tra ứng dụng có phù hợp với tôi không?
Bạn nên dùng Kiểm tra ứng dụng trong hầu hết các trường hợp. Tuy nhiên, bạn không cần hoặc không được hỗ trợ Kiểm tra ứng dụng trong các trường hợp sau:
- Ứng dụng riêng tư hoặc thử nghiệm: Nếu ứng dụng của bạn không được cung cấp công khai, thì bạn không cần dùng tính năng Kiểm tra ứng dụng.
- Thiết bị bị xâm nhập: Các nhà cung cấp dịch vụ chứng thực được đề xuất sẽ ngăn SDK điều hướng cho iOS chạy trên các thiết bị không đáng tin cậy, chẳng hạn như điện thoại đã bị can thiệp vào hệ thống hoặc bẻ khoá. Để hỗ trợ các thiết bị này, hãy triển khai một nhà cung cấp dịch vụ chứng thực tuỳ chỉnh.
Tổng quan về các bước triển khai
Nhìn chung, bạn sẽ làm theo các bước sau để tích hợp ứng dụng của mình với Kiểm tra ứng dụng:
- Thêm Firebase vào ứng dụng của bạn.
- Thêm thư viện Kiểm tra ứng dụng và khởi chạy Kiểm tra ứng dụng.
- Thêm nhà cung cấp mã thông báo. Bước này gọi nhà cung cấp dịch vụ chứng thực mà bạn chọn để xác minh tính toàn vẹn của thiết bị hoặc ứng dụng.
- Khởi chạy API Điều hướng và API Kiểm tra ứng dụng.
- Bật tính năng gỡ lỗi. Điều này rất hữu ích trong quá trình phát triển hoặc trong môi trường tích hợp liên tục (CI).
- Theo dõi các yêu cầu của ứng dụng trước khi bật chế độ thực thi. Bằng cách này, bạn có thể thực thi Kiểm tra ứng dụng một cách liền mạch mà không làm gián đoạn người dùng.
Những điều cần cân nhắc khi lên kế hoạch tích hợp Kiểm tra ứng dụng
- Hạn mức của nhà cung cấp dịch vụ chứng thực: Các nhà cung cấp dịch vụ chứng thực mà chúng tôi đề xuất (DeviceCheck hoặc App Attest) phải tuân theo hạn mức và giới hạn do Apple đặt ra.
- Độ trễ khi khởi động: Trong hầu hết các trường hợp, người dùng sẽ không gặp phải độ trễ trong quá trình sử dụng thông thường, vì mã thông báo Kiểm tra ứng dụng được lưu vào bộ nhớ đệm trên thiết bị. Hệ thống tự động làm mới mã thông báo Kiểm tra ứng dụng ở chế độ nền trước khi hết hạn để duy trì hiệu suất liền mạch. Tuy nhiên, nếu không có mã thông báo Kiểm tra ứng dụng hợp lệ, người dùng ứng dụng của bạn sẽ gặp phải một số độ trễ khi khởi động. Ví dụ: độ trễ này xảy ra trong quá trình khởi động nguội khi mã thông báo được lưu vào bộ nhớ đệm đã hết hạn hoặc bị thiếu.
- TTL của mã thông báo: TTL (Thời gian tồn tại) xác định khoảng thời gian mà mã thông báo Kiểm tra ứng dụng có hiệu lực trước khi cần được làm mới. Bạn có thể định cấu hình thời lượng này từ 30 phút đến 7 ngày trong bảng điều khiển của Firebase. Bạn nên đặt thời lượng là 1 giờ để đảm bảo an toàn, nhưng SDK sẽ tự động cố gắng làm mới trong nền sau khoảng một nửa thời lượng TTL. Để xem hướng dẫn từng bước về bảng điều khiển, hãy xem tài liệu về Kiểm tra ứng dụng Firebase.
Tích hợp ứng dụng với tính năng Kiểm tra ứng dụng
Điều kiện tiên quyết và yêu cầu
- Một ứng dụng đã cài đặt SDK Điều hướng cho iOS phiên bản 11.0 trở lên.
- Mã nhận dạng gói của ứng dụng.
- Mã nhóm trong thẻ Tư cách thành viên trong Apple Developer Console.
- Nếu bạn dự định sử dụng DeviceCheck, hãy cung cấp tệp khoá riêng tư và mã khoá.
- Bạn phải là chủ sở hữu của ứng dụng trong Google Cloud Console.
- Mã dự án của ứng dụng trong Google Cloud Console.
Bước 1: Thêm Firebase vào ứng dụng của bạn
Làm theo hướng dẫn trong tài liệu dành cho nhà phát triển Firebase để thêm Firebase vào ứng dụng của bạn. Thêm tệp GoogleService-Info.plist (không sửa đổi) vào cấp gốc của dự án.
Trong tệp AppDelegate, hãy nhập các mô-đun sau:
Swift
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
Bước 2: Thêm thư viện Kiểm tra ứng dụng và khởi chạy tính năng Kiểm tra ứng dụng
Firebase cung cấp hướng dẫn cho từng nhà cung cấp dịch vụ chứng thực mặc định. Những hướng dẫn này cho bạn biết cách thiết lập dự án Firebase và thêm thư viện Kiểm tra ứng dụng vào ứng dụng của bạn. Hãy làm theo các mã mẫu được cung cấp để khởi động tính năng Kiểm tra ứng dụng.
- Làm theo hướng dẫn của Firebase để thêm thư viện Kiểm tra ứng dụng:
- Chạy tính năng Kiểm tra ứng dụng trong
AppDelegate:- Nếu bạn đang sử dụng App Attest, hãy tạo một phương thức triển khai
AppCheckProviderFactoryvà đăng ký phương thức đó trước khi gọiFirebaseApp.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];
- Nếu bạn đang sử dụng DeviceCheck, hãy đặt nhà máy bằng cách sau:
Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Nếu bạn đang sử dụng App Attest, hãy tạo một phương thức triển khai
Bước 3: Thêm nhà cung cấp mã thông báo
Tạo một tệp có tên là AppCheckTokenProvider (hoặc nếu bạn đang sử dụng Objective-C, hãy tạo hai tệp có tên là AppCheckTokenProvider.h và AppCheckTokenProvider.m) ở cấp gốc của ứng dụng.
Lớp này phải tuân thủ giao thức GMSAppCheckTokenProvider và triển khai phương thức 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
Bước 4: Khởi chạy API Điều hướng và Kiểm tra ứng dụng
Khởi chạy SDK Điều hướng cho iOS và đăng ký thực thể của trình cung cấp mã thông báo trên GMSServices:
Swift
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS GMSServices.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.appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
Bước 5: Bật tính năng gỡ lỗi (không bắt buộc)
Sau khi Kiểm tra ứng dụng được thực thi cho SDK Điều hướng cho iOS, các tính năng của ứng dụng phụ thuộc vào SDK Điều hướng cho iOS sẽ không chạy trong trình mô phỏng hoặc trong môi trường tích hợp liên tục (CI) vì các môi trường này không đủ điều kiện là thiết bị hợp lệ. Để chạy ứng dụng trong các môi trường này trong quá trình phát triển và thử nghiệm, bạn cần tạo một bản gỡ lỗi của ứng dụng sử dụng nhà cung cấp dịch vụ gỡ lỗi Kiểm tra ứng dụng thay vì nhà cung cấp dịch vụ chứng thực chính thức.
- Định cấu hình nhà máy của nhà cung cấp dịch vụ gỡ lỗi trong
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];
- Bật tính năng ghi nhật ký trên dự án Xcode, chạy ứng dụng và tìm mã gỡ lỗi cục bộ trong nhật ký bảng điều khiển.
- Sao chép và thêm mã thông báo gỡ lỗi này vào Bảng điều khiển của Firebase. Để biết thêm thông tin, hãy tham khảo tài liệu về nhà cung cấp dịch vụ gỡ lỗi Kiểm tra ứng dụng Firebase.
Bước 6: Theo dõi các yêu cầu của ứng dụng và quyết định biện pháp thực thi
Trước khi bật chế độ thực thi, hãy theo dõi các yêu cầu của ứng dụng để đảm bảo rằng bạn sẽ không làm gián đoạn người dùng hợp pháp.
- Truy cập vào màn hình chỉ số Kiểm tra ứng dụng trong bảng điều khiển của Firebase để xem tỷ lệ phần trăm lưu lượng truy cập đã xác minh so với lưu lượng truy cập chưa xác minh.
- Sau khi chắc chắn rằng phần lớn lưu lượng truy cập của bạn đã được xác minh và người dùng hợp pháp đã cập nhật lên phiên bản ứng dụng có chứa phương thức triển khai Kiểm tra ứng dụng, hãy bật chế độ thực thi.
- Sau khi bạn bật chế độ thực thi, Kiểm tra ứng dụng sẽ từ chối tất cả lưu lượng truy cập không có mã thông báo Kiểm tra ứng dụng hợp lệ.