開始在 Android 上使用 App Check 和 Play Integrity

本頁面將說明如何使用內建的 Play Integrity 供應商在 Android 應用程式中啟用 App Check。啟用 App Check 可確保只有應用程式能存取專案的 Firebase 資源。請參閱這項功能的總覽

目前內建 Play Integrity 供應商僅支援透過 Google Play 發行的 Android 應用程式。如要使用 Play Integrity 的 Play 外功能,或是搭配自訂供應商使用 App Check,請參閱「實作自訂 App Check 供應商」一文。

1. 設定 Firebase 專案

  1. 將 Firebase 新增至 Android 專案 (如果尚未這麼做)。

  2. 啟用 Play Integrity API:

    1. 如果您尚未在 Google Play 管理中心選取應用程式或新增應用程式,請先完成這項操作。

    2. 在「版本」部分,按一下「應用程式完整性」

    3. 前往該頁面的「Play Integrity API」部分,按一下「連結 Cloud 專案」,然後從 Google Cloud 專案清單中選取您的 Firebase 專案。 您在此選取的專案必須與註冊應用程式的 Firebase 專案相同 (請參閱下一個步驟)。

  3. 在 Firebase 控制台的 App Check 區段,為應用程式註冊使用 App Check,以便與 Play Integrity 供應商搭配使用。您需要提供應用程式簽署憑證的 SHA-256 指紋

    您通常需要註冊專案的所有應用程式,因為一旦為 Firebase 產品啟用強制執行功能,只有已註冊的應用程式可以存取產品的後端資源。

  4. 選用:在應用程式註冊設定中,針對供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。存留時間可設為 30 分鐘至 7 天之間的任何值。變更這個值時,請注意以下優缺點:

    • 安全性:縮短存留時間越短,安全性就越高,越能避免攻擊者濫用權杖。
    • 效能:縮短存留時間 (TTL) 越短,應用程式執行認證的頻率就會越高。由於應用程式認證程序會在每次執行網路要求時增加延遲時間,因此短暫存留時間可能會影響應用程式的效能。
    • 配額與費用:縮短存留時間 (TTL) 和頻繁的重新認證作業會更快消耗配額。如果是付費服務,費用可能會增加。請參閱配額與限制

    對大多數應用程式來說,預設的存留時間是 1 小時。請注意,App Check 程式庫會以約半時間的 TTL 更新權杖。

2. 在應用程式中加入 App Check 程式庫

模組 (應用程式層級) Gradle 檔案 (通常是 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle) 中,新增 Android 適用的 App Check 程式庫依附元件。建議您使用 Firebase Android BoM 控管程式庫的版本管理。

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.1.2"))

    // Add the dependencies for the App Check libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-appcheck-playintegrity")
}

只要使用 Firebase Android BoM,您的應用程式就會一律使用相容的 Firebase Android 程式庫版本。

(替代做法) 新增 Firebase 程式庫依附元件,「不」使用 BoM

如果選擇不使用 Firebase BoM,就必須在依附元件行中指定每個 Firebase 程式庫版本。

請注意,如果您在應用程式中使用多個 Firebase 程式庫,強烈建議您使用 BoM 來管理程式庫版本,以確保所有版本都相容。

dependencies {
    // Add the dependencies for the App Check libraries
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-appcheck-playintegrity:18.0.0")
}
在尋找 Kotlin 專用的程式庫模組嗎?2023 年 10 月 (Firebase BoM 32.5.0) 起,Kotlin 和 Java 開發人員都能使用主要的程式庫模組 (詳情請參閱這項計畫的常見問題)。

3. 初始化 App Check

將下列初始化程式碼新增至應用程式,讓它在使用任何 Firebase SDK 前執行:

Kotlin+KTX

Firebase.initialize(context = this)
Firebase.appCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance(),
)

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance());

後續步驟

在應用程式中安裝 App Check 程式庫後,即可開始向使用者發布更新的應用程式。

更新後的用戶端應用程式將開始傳送 App Check 權杖,以及對 Firebase 發出的每個要求,但您在 Firebase 控制台的「App Check」部分啟用強制執行後,Firebase 產品就不會要求權杖有效。

監控指標並啟用強制執行功能

不過,在強制執行之前,您應先確認這樣做不會影響現有的合法使用者。另一方面,如果您發現應用程式資源遭到濫用,建議您盡早啟用強制執行功能。

為做出此決定,您可以查看所用服務的 App Check 指標:

啟用強制執行 App Check

瞭解 App Check 會對使用者造成哪些影響,您已準備好進行後續步驟時,可以啟用 App Check 強制執行功能:

在偵錯環境中使用 App Check

為應用程式註冊 App Check 後,如果您想在 App Check 通常不會歸類為有效的環境中 (例如開發期間的模擬器,或是從持續整合 (CI) 環境) 執行應用程式,您可以建立採用 App Check 偵錯供應商 (而非實際認證供應商) 的應用程式偵錯版本。

請參閱「搭配 Android 偵錯供應商使用 App Check」一文。