在 iOS 上使用 DeviceCheck 啟用應用檢查

此頁面向您展示如何使用內置的 DeviceCheck 提供程序在 iOS 應用程序中啟用 App Check。啟用 App Check 有助於確保只有您的應用可以訪問您項目的 Firebase 資源。看到一個概述此功能。

如果你想使用App中檢查你自定義的供應商,請參閱實現自定義應用程序檢查供應商

1. 設置您的 Firebase 項目

  1. 添加火力地堡到iOS項目,如果你還沒有這樣做。

  2. 在蘋果開發者網站,創建一個DeviceCheck私鑰

  3. 註冊您的應用程序使用應用程序檢查與在該DeviceCheck提供商項目設置>應用程序檢查的火力地堡控制台部分。您需要提供在上一步中創建的私鑰。

    您通常需要註冊項目的所有應用,因為一旦您為 Firebase 產品啟用強制執行,只有註冊的應用才能訪問產品的後端資源。

  4. 可選:在應用註冊設置,設置一個自定義的時間生存(TTL)為App檢查令牌由供應商發出的。您可以將 TTL 設置為 30 分鐘到 7 天之間的任何值。更改此值時,請注意以下權衡:

    • 安全性:較短的 TTL 提供更強的安全性,因為它減少了攻擊者可以濫用洩漏或攔截的令牌的窗口。
    • 性能:更短的 TTL 意味著您的應用程序將更頻繁地執行證明。由於應用證明過程會在每次執行時增加網絡請求的延遲,因此較短的 TTL 可能會影響應用的性能。
    • 配額:較短的 TTL 和頻繁的重新認證會更快地耗盡您的配額。見配額和限制

    1小時的默認TTL是合理的大多數應用程序。

2. 將 App Check 庫添加到您的應用中

  1. 為App檢查的依賴添加到項目中的Podfile

    pod 'Firebase/AppCheck'

    或者,你可以用斯威夫特包管理器來代替。

    確保您還使用了您依賴的任何 Firebase 服務客戶端庫的最新版本。

  2. 運行pod install並打開創建.xcworkspace文件。

在您的應用程序中安裝 App Check 庫後,開始將更新的應用程序分發給您的用戶。

更新後的客戶端應用將開始發送 App Check 令牌以及它向 Firebase 發出的每個請求,但 Firebase 產品不需要令牌有效,直到您在 Firebase 控制台的 App Check 部分啟用強制執行。有關詳細信息,請參閱接下來的兩節。

3. 監控請求指標

現在您的更新應用已掌握在用戶手中,您可以為您使用的 Firebase 產品啟用 App Check 的強制執行。但是,在您這樣做之前,您應該確保這樣做不會干擾您現有的合法用戶。

實時數據庫和雲存儲

您可以用來為實時數據庫和雲存儲做出此決定的一個重要工具是 App Check 請求指標屏幕。

要查看應用程序檢查請求指標的產物,打開項目設置>應用檢查的火力地堡控制台的部分。例如:

App Check 指標頁面的屏幕截圖

每個產品的請求指標分為四類:

  • 驗證請求是那些具有有效的應用程序檢查令牌。啟用 App Check 強制後,只有此類別中的請求才會成功。

  • 過時的客戶端請求是那些缺少應用程序檢查令牌。在 App Check 包含在應用中之前,這些請求可能來自舊版本的 Firebase SDK。

  • 來歷不明的請求是那些缺少應用程序檢查令牌,不要像他們來自火力地堡SDK。這些可能來自使用被盜 API 密鑰發出的請求或在沒有 Firebase SDK 的情況下發出的偽造請求。

  • 無效的請求是那些有一個無效的應用程序檢查令牌,這可能是從不真實客戶端試圖假冒您的應用程序,或從模擬環境。

當您決定啟用強制執行時,您的應用程序的這些類別的分佈應該通知。以下是一些指導方針:

  • 如果幾乎所有最近的請求都來自經過驗證的客戶端,請考慮啟用強制措施以開始保護您的後端資源。

  • 如果最近請求的很大一部分來自可能已經過時的客戶端,為避免干擾用戶,請考慮等待更多用戶更新您的應用,然後再啟用強制執行。對已發布的應用程序強制執行 App Check 將破壞未與 App Check SDK 集成的先前應用程序版本。

  • 如果您的應用程序尚未啟動,您應該立即啟用 App Check 強制執行,因為沒有任何過時的客戶端在使用。

雲功能

對於 Cloud Functions,您可以通過檢查函數的日誌來獲取 App Check 指標。可調用函數的每次調用都會發出一個結構化的日誌條目,如下例所示:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

您可以通過分析在谷歌雲端控制台這些指標建立一個日誌,基於計數器的度量與以下數據過濾器:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

標籤的指標使用領域jsonPayload.verifications.appCheck

4. 啟用執行

要啟用強制執行,請按照以下每個產品的說明進行操作。為產品啟用強制執行後,所有對該產品的未經驗證的請求都將被拒絕。

實時數據庫和雲存儲

要為實時數據庫和雲存儲啟用強制措施:

  1. 打開項目設置>應用程序檢查的火力地堡控制台部分。

  2. 展開要為其啟用強制執行的產品的指標視圖。

  3. 點擊強制執行,並確認您的選擇。

請注意,啟用強制執行後最多可能需要 10 分鐘才能生效。

雲功能

請參閱啟用應用檢查執法雲功能

下一步

如果在為 App Check 註冊應用程序後,您希望在 App Check 通常不會將其歸類為有效的環境(例如開發期間的模擬器)或持續集成 (CI) 環境中運行您的應用程序,您可以創建使用 App Check 調試提供程序而不是真正的證明提供程序的應用程序的調試版本。

請參閱使用App請與iOS上的調試提供商