Sử dụng Kiểm tra ứng dụng để bảo mật SDK Điều hướng cho Android
Tính năng Kiểm tra ứng dụng của Firebase giúp 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. Bằng cách yêu cầu nhà cung cấp chứng thực (chẳng hạn như Play Integrity) đá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 của bạn với App Check, bạn sẽ thêm lớp bảo vệ chống lại các yêu cầu độc hại và trái phép, từ đó bảo vệ hoạt động 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ể tính năng báo cáo sự cố theo thời gian thực trong hệ sinh thái ứng dụng đội xe của bạn, nhờ đó mang lại lợi ích cho tất cả những người lái xe 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 sự cố.
Tại sao nên dùng tính năng Kiểm tra ứng dụng?
Kiểm tra ứng dụng bảo vệ 2 khu vực riêng biệt của Navigation SDK cho Android: chức năng điều hướng chính và báo cáo gián đoạn.
Di chuyển
Kiểm tra ứng dụng giúp chặn các yêu cầu chính của Navigation SDK cho Android từ các nguồn độc hại hoặc trái phép. Việc này mang lại lợi ích trực tiếp cho bạn bằng cách bảo vệ dự án của bạn khỏi hành vi gian lận trong thanh toán và tình trạng hết hạn mức.
Báo cáo sự cố
Bạn nên dùng Kiểm tra ứng dụng nếu ứng dụng của bạn hỗ trợ các chức năng báo cáo và bình chọn 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 rằng tài xế của bạn được cung cấp các tuyến đường chính xác nhất, có tính đến mọi thông tin 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:
- Thanh tin cậy cao đối với thông tin đóng đường: Các sự kiện ảnh hưởng đến tuyến đường, chẳng hạn như đường bị đóng, có thể thay đổi đáng kể hành vi định tuyến cho 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 thông tin gián đoạn do đường bị đóng dựa trên 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ừ Navigation SDK cho Android có chứa mã thông báo Kiểm tra ứng dụng. Phần phụ trợ của Google dùng mã thông báo này để xác thực tính hợp lệ của ý kiến phản hồi, từ đó nâng cao mức độ tin cậy và cho phép đánh giá ý kiến phản hồi đó về mức độ ảnh hưởng đến bản đồ trực tiếp.
- Tác động của việc bỏ qua Kiểm tra ứng dụng: Những 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ợ dùng Kiểm tra ứng dụng trong các trường hợp sau:
- Ứng dụng riêng tư hoặc ứng dụng thử nghiệm: Nếu ứng dụng của bạn không truy cập được công khai, thì bạn không cần dùng Kiểm tra ứng dụng.
- Thiết bị bị xâm nhập: Các trình cung cấp chứng thực được đề xuất sẽ ngăn Navigation SDK cho Android chạy trên các thiết bị không đáng tin cậy, chẳng hạn như điện thoại đã root hoặc bẻ khoá. Để hỗ trợ các thiết bị này, hãy triển khai một trình cung cấp chứng thực tuỳ chỉnh.
- Thiết bị Android không có GMS: Thiết bị Android phải chạy Các dịch vụ của Google dành cho thiết bị di động (GMS) để sử dụng Play Integrity. Nếu bạn dự định hỗ trợ các thiết bị Android không có GMS, hãy triển khai một nhà cung cấp 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 một nhà cung cấp mã thông báo. Bước này sẽ gọi trình cung cấp 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 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 chứng thực: Nhà cung cấp chứng thực mà chúng tôi đề xuất là Play Integrity có hạn mức gọi hằng ngày cho cấp sử dụng API Chuẩn. Để biết thêm thông tin về hạn mức gọi, hãy xem trang Thiết lập trong tài liệu dành cho nhà phát triển của Play Integrity của Google Play.
- Độ 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 App Check trong 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: Thời gian tồn tại (TTL) 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 khoảng thời gian 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ờ làm cơ sở an toàn, nhưng SDK sẽ tự động cố gắng làm mới trong nền sau khoảng thời gian bằng một nửa thời lượng TTL. Để biết 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 của bạn với 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 Navigation SDK cho Android phiên bản 7.9 trở lên.
- Dấu vân tay chứng chỉ SHA-256 của ứng dụng.
- Tên gói của ứng dụng.
- 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 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 google-services.json vào thư mục cấp ứng dụng của dự án.
Bước 2: Thêm thư viện Kiểm tra ứng dụng và khởi động Kiểm tra ứng dụng
Thêm phần phụ thuộc Kiểm tra ứng dụng vào tệp build.gradle của ứng dụng:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
Khởi chạy tính năng Kiểm tra ứng dụng trong lớp Ứng dụng hoặc hoạt động chính của bạn:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Bước 3: Thêm trình cung cấp mã thông báo
Tạo một phương thức triển khai giao diện MapsAppCheckTokenProvider. Trình cung cấp này không đồng bộ tìm nạp mã thông báo Kiểm tra ứng dụng từ tính năng Kiểm tra ứng dụng Firebase và truyền mã thông báo đó đến ngăn xếp mạng Navigation SDK cho Android bằng cách sử dụng MapsAppCheckTokenCallback:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
Bước 4: Khởi chạy API Điều hướng và API Kiểm tra ứng dụng
Khởi động Navigation SDK cho Android và đăng ký phiên bản trình cung cấp mã thông báo hợp nhất bằng MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
Bước 5: Bật chế độ gỡ lỗi (không bắt buộc)
Sau khi Kiểm tra ứng dụng được thực thi cho Navigation SDK for Android, các tính năng của ứng dụng phụ thuộc vào Navigation SDK for Android sẽ không chạy trong trình mô phỏng hoặc từ môi trường tích hợp liên tục (CI) vì những 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à kiểm thử, bạn cần tạo một bản gỡ lỗi của ứng dụng sử dụng trình cung cấp gỡ lỗi App Check thay vì trình cung cấp chứng thực sản xuất.
- Thêm phần phụ thuộc nhà cung cấp dịch vụ gỡ lỗi vào tệp
build.gradlecủa ứng dụng:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Định cấu hình tính năng Kiểm tra ứng dụng để sử dụng nhà máy nhà cung cấp dịch vụ gỡ lỗi trong các bản gỡ lỗi:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- Chạy ứng dụng trên trình mô phỏng hoặc thiết bị gỡ lỗi. Kiểm tra ứng dụng sẽ in một mã gỡ lỗi cục bộ vào đầu ra Logcat.
- Sao chép và đăng ký mã gỡ lỗi này trong Bảng điều khiển của Firebase. Để biết thêm thông tin chi tiết, 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: Giám sát các yêu cầu của ứng dụng và quyết định về việc thực thi
Trước khi bật chế độ thực thi, hãy giám sát 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 lệ.
- 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 bạn chắc chắn rằng phần lớn lưu lượng truy cập của bạn là người dùng hợp pháp đã được xác minh và đã cập nhật lên phiên bản ứng dụng có chứa quy trình triển khai App Check, 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ệ.