本頁面說明如何使用預設提供者在 Flutter 應用程式中啟用 App Check:Android 上的 Play Integrity、Apple 平台上的 Device Check,以及網頁上的 reCAPTCHA v3。啟用 App Check 後,您就能確保只有您的應用程式可以存取專案的 Firebase 資源。請參閱這項功能的總覽。
1. 設定 Firebase 專案
如果您尚未安裝並初始化 FlutterFire,請先完成這項操作。
在 Firebase 控制台的「專案設定 > App Check」部分,為應用程式註冊透過 Play Integrity、Device Check 和 reCAPTCHA 供應商使用 App Check。
您通常需要註冊所有專案的應用程式,因為一旦啟用 Firebase 產品的強制執行功能,只有已註冊的應用程式才能存取產品的後端資源。
選用:在應用程式註冊設定中,為供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。您可以將 TTL 設為 30 分鐘至 7 天之間的任何值。變更這個值時,請注意下列權衡:
- 安全性:縮短存留時間可提供更強的安全性,因為這樣一來,攻擊者就無法在較短的時間內濫用遭洩漏或攔截的權杖。
- 效能:較短的 TTL 代表應用程式會更頻繁地執行認證。由於應用程式認證程序每次執行時都會為網路要求增加延遲時間,因此 TTL 時間過短可能會影響應用程式效能。
- 配額和費用:較短的 TTL 和頻繁的重複認證會讓配額耗盡得更快,而付費服務可能會產生更多費用。請參閱「配額與限制」。
預設的存留時間對大多數應用程式來說都合理。請注意,App Check 程式庫會在 TTL 時間長度的一半時間內重新整理權杖。
2. 在應用程式中加入 App Check 程式庫
在 Flutter 專案的根目錄中,執行下列指令來安裝外掛程式:
flutter pub add firebase_app_check
完成後,請重新建構 Flutter 應用程式:
flutter run
3. 初始化 App Check
將下列初始化程式碼新增至應用程式,讓應用程式在呼叫 Firebase.initializeApp()
後,在您使用任何 Firebase 服務 (例如 Storage) 之前執行;
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
// You can also use a `ReCaptchaEnterpriseProvider` provider instance as an
// argument for `webProvider`
webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'),
// Default provider for Android is the Play Integrity provider. You can use the "AndroidProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Safety Net provider
// 3. Play Integrity provider
androidProvider: AndroidProvider.debug,
// Default provider for iOS/macOS is the Device Check provider. You can use the "AppleProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Device Check provider
// 3. App Attest provider
// 4. App Attest provider with fallback to Device Check provider (App Attest provider is only available on iOS 14.0+, macOS 14.0+)
appleProvider: AppleProvider.appAttest,
);
runApp(App());
}
後續步驟
在應用程式中安裝 App Check 程式庫後,請開始向使用者發布更新版應用程式。
更新後的用戶端應用程式會開始傳送 App Check 權杖,並附加至向 Firebase 提出的每項要求,但 Firebase 產品不會要求權杖有效,除非您在 Firebase 控制台的 App Check 專區中啟用強制執行功能。
監控指標並啟用強制執行功能
不過,啟用違規處置前,請先確認這麼做不會影響現有的合法使用者。另一方面,如果您發現應用程式資源遭到可疑使用,可能需要盡快啟用強制執行機制。
如要做出這項決定,您可以查看所用服務的 App Check 指標:
- 針對即時資料庫、Cloud Firestore、Cloud Storage 和驗證功能監控應用程式檢查要求指標。
- 監控 Cloud Functions 的 App Check 要求指標。
啟用 App Check 強制執行
瞭解 App Check 對使用者的影響,並準備繼續執行時,您可以啟用 App Check 強制執行:
- 為即時資料庫、Cloud Firestore、Cloud Storage 和驗證功能啟用 App Check 強制執行。
- 為 Cloud Functions 啟用 App Check 強制執行功能。
在偵錯環境中使用 App Check
註冊應用程式以供 App Check 使用後,如果您想在 App Check 通常不會歸類為有效的環境中執行應用程式,例如開發期間的模擬器,或從持續整合 (CI) 環境,您可以建立應用程式的偵錯版本,使用 App Check 偵錯提供者,而非實際的認證提供者。
請參閱「在 Flutter 應用程式中使用 App Check 與偵錯提供者」。