開始在 Web 應用程序中使用帶有 reCAPTCHA Enterprise 的 App Check

本頁向您展示如何使用 reCAPTCHA Enterprise 提供商在 Web 應用程序中啟用 App Check。啟用應用檢查後,您可以幫助確保只有您的應用可以訪問項目的 Firebase 資源。請參閱此功能的概述

請注意,App Check 使用基於 reCAPTCHA Enterprise 分數的站點密鑰,這使其對用戶不可見。 reCAPTCHA Enterprise 提供商不會要求用戶隨時解決挑戰。

如果您想將 App Check 與您自己的自定義提供程序一起使用,請參閱實施自定義 App Check 提供程序

1. 設置您的 Firebase 項目

  1. 如果您尚未將Firebase 添加到您的 JavaScript 項目,請將其添加到您的 JavaScript 項目中

  2. 打開 Cloud 控制台的reCAPTCHA Enterprise部分並執行以下操作:

    1. 如果系統提示您啟用 reCAPTCHA Enterprise API,請執行此操作。
    2. 創建網站類型密鑰。您需要指定託管 Web 應用程序的域。選擇“使用複選框挑戰”選項。
  3. 在 Firebase 控制台的App Check 部分中,通過 reCAPTCHA Enterprise 提供商註冊您的應用以使用 App Check。您需要提供在上一步中獲得的站點密鑰。

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

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

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

    對於大多數應用程序來說,默認 TTL 1 小時是合理的。請注意,App Check 庫會在大約 TTL 持續時間的一半時刷新令牌。

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

如果您尚未將 Firebase 添加到您的網絡應用中,請將其添加到您的網絡應用中。請務必導入 App Check 庫。

3. 初始化應用檢查

在訪問任何 Firebase 服務之前,將以下初始化代碼添加到您的應用程序。您需要將您在 Cloud 控制台中創建的 reCAPTCHA Enterprise 站點密鑰傳遞給activate()

Web modular API

import { initializeApp } from "firebase/app";
import { initializeAppCheck, ReCaptchaEnterpriseProvider } from "firebase/app-check";

const app = initializeApp({
  // Your Firebase configuration object.
});

// Create a ReCaptchaEnterpriseProvider instance using your reCAPTCHA Enterprise
// site key and pass it to initializeAppCheck().
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaEnterpriseProvider(/* reCAPTCHA Enterprise site key */),
  isTokenAutoRefreshEnabled: true // Set to true to allow auto-refresh.
});

Web namespaced API

firebase.initializeApp({
  // Your Firebase configuration object.
});

// Create a ReCaptchaEnterpriseProvider instance using your reCAPTCHA Enterprise
// site key and pass it to activate().
const appCheck = firebase.appCheck();
appCheck.activate(
  new firebase.appCheck.ReCaptchaEnterpriseProvider(
    /* reCAPTCHA Enterprise site key */
  ),
  true // Set to true to allow auto-refresh.
);

下一步

將 App Check 庫安裝到您的應用程序中後,進行部署。

更新後的客戶端應用程序將開始發送應用程序檢查令牌及其向Firebase 發出的每個請求,但Firebase 產品不會要求令牌有效,直到您在Firebase 控制台的應用程序檢查部分中啟用強制執行。

監控指標並啟用執行

但是,在啟用強制執行之前,您應該確保這樣做不會干擾您現有的合法用戶。另一方面,如果您發現應用程序資源的可疑使用,您可能希望盡快啟用強制執行。

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

啟用應用程序檢查強制執行

當您了解 App Check 將如何影響您的用戶並且準備好繼續操作時,您可以啟用 App Check 強制執行:

在調試環境中使用 App Check

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

請參閱在 Web 應用程序中使用 App Check 與調試提供程序

費用說明

每次運行您的 Web 應用程序的瀏覽器刷新其應用程序檢查令牌時,應用程序檢查都會代表您創建評估,以驗證用戶的響應令牌。您的項目將針對超出免費配額創建的每個評估付費。有關詳細信息,請參閱reCAPTCHA Enterprise 定價

默認情況下,您的網絡應用程序將每1 小時刷新此令牌兩次。要控制應用程序刷新應用程序檢查令牌的頻率(以及創建新評估的頻率),請配置其 TTL