本頁向您展示如何使用內建的 SafetyNet 提供者在 Android 應用程式中啟用應用程式檢查。啟用應用程式檢查後,您可以協助確保只有您的應用程式可以存取專案的 Firebase 資源。請參閱此功能的概述。
App Check 將繼續支援現有的 SafetyNet 專案直至 2023 年 6 月,此後,SafetyNet 配置將被凍結且不可修改。 2024 年 6 月之後,所有 SafetyNet 功能將永久關閉和刪除。
如果您想將 App Check 與您自己的自訂提供者一起使用,請參閱實作自訂 App Check 提供者。
1. 設定您的 Firebase 項目
在 Firebase 控制台的App Check部分中向 SafetyNet 提供者註冊您的應用程式以使用 App Check。您需要提供應用程式簽署憑證的 SHA-256 指紋。
您通常需要註冊專案的所有應用,因為一旦為 Firebase 產品啟用強制執行,只有註冊的應用程式才能存取該產品的後端資源。
可選:在應用程式註冊設定中,為提供者頒發的應用程式檢查令牌設定自訂生存時間 (TTL)。您可以將 TTL 設定為 30 分鐘到 7 天之間的任意值。更改此值時,請注意以下權衡:
- 安全性:較短的 TTL 提供更強的安全性,因為它減少了攻擊者濫用洩漏或攔截的令牌的視窗。
- 效能:較短的 TTL 意味著您的應用程式將更頻繁地執行證明。由於應用程式證明過程會在每次執行時增加網路請求的延遲,因此較短的 TTL 可能會影響應用程式的效能。
- 配額和成本:較短的 TTL 和頻繁的重新認證會更快地耗盡您的配額,對於付費服務,可能會花費更多。請參閱配額和限制。
對於大多數應用程式來說,預設 TTL 1 小時是合理的。請注意,App Check 庫會在大約 TTL 持續時間的一半時刷新令牌。
2. 將 App Check 庫加入您的應用程式中
在您的模組(應用程式層級)Gradle 檔案(通常為app/build.gradle
)中,聲明適用於 Android 的 App Check 程式庫的依賴項:
dependencies {
implementation 'com.google.firebase:firebase-appcheck-safetynet:16.1.2'
}
3. 初始化應用檢查
將以下初始化程式碼新增至您的應用程式中,以便它在您使用任何其他 Firebase SDK 之前執行:
Kotlin+KTX
Firebase.initialize(context = this)
Firebase.appCheck.installAppCheckProviderFactory(
SafetyNetAppCheckProviderFactory.getInstance()
)
Java
FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
SafetyNetAppCheckProviderFactory.getInstance());
下一步
在您的應用程式中安裝 App Check 庫後,開始向您的用戶分發更新的應用程式。
更新後的客戶端應用程式將開始發送應用程式檢查令牌及其向Firebase 發出的每個請求,但Firebase 產品不會要求令牌有效,直到您在Firebase 控制台的應用程式檢查部分中啟用強制執行。
監控指標並啟用執行
但是,在啟用強制執行之前,您應該確保這樣做不會幹擾您現有的合法使用者。另一方面,如果您發現應用程式資源的可疑使用,您可能希望盡快啟用強制執行。
為了幫助做出此決定,您可以查看您使用的服務的 App Check 指標:
啟用應用程式檢查強制執行
當您了解 App Check 將如何影響您的使用者並且準備好繼續操作時,您可以啟用 App Check 強制執行:
- 為即時資料庫、Cloud Firestore、雲端儲存和驗證(測試版)啟用應用程式檢查強制執行。
- 為 Cloud Functions 啟用應用程式檢查強制執行。
在調試環境中使用 App Check
如果您在為App Check 註冊您的應用程式後,想要在App Check 通常不會歸類為有效的環境中運行您的應用程序,例如開發期間的模擬器,或者在持續整合(CI) 環境中,您可以建立應用程式的偵錯版本,該版本使用 App Check 偵錯提供者而不是真正的證明提供者。
請參閱在 Android 上使用 App Check 與偵錯提供者。