導入 Firebase App Check,防止未經授權的用戶端存取 API

直接從行動或網頁應用程式呼叫 API 時 (例如允許存取生成式 AI 模型的 API),API 容易遭到未經授權的用戶端濫用。為保護這些 API,您可以使用 Firebase App Check 驗證所有傳入的 API 呼叫是否來自實際應用程式。

Firebase AI Logic 提供 Proxy 閘道,可讓您與 Firebase App Check 整合,並保護行動應用程式和網頁應用程式呼叫的生成式 AI 模型 API。搭配 App Check 使用 Firebase AI Logic SDK 時,支援所有設定:

  • 保護「Gemini API」供應商:Gemini Developer APIVertex AI Gemini API

  • 保護所有支援的模型,包括 Gemini 模型和 Imagen 模型。

App Check 的運作方式概要

使用 App Check 時,執行您應用程式的裝置會使用應用程式或裝置認證供應商,驗證下列一或多項內容:

  • 要求來自正版應用程式
  • 要求來自未經竄改的真實裝置

這項認證會附加至應用程式使用 Firebase AI Logic SDK 發出的每項要求。啟用App Check強制執行後,系統會拒絕來自沒有有效認證的用戶端要求,以及來自您未授權應用程式或平台的要求。

建議您在設定 App Check 時,務必為即將推出的強化保護功能做好準備 (又稱重播保護)。

如要瞭解 App Check 的詳細資訊,包括配額和限制,請參閱相關文件。

可用的供應商和實作說明

App Check說明文件提供認證供應商的說明,以及實作說明。

  1. 選擇預設供應商,然後按照下列連結中的導入說明操作:

    請注意,如果預設供應商都無法滿足您的需求,您可以實作自訂供應商,使用第三方認證供應商或您自己的認證技術。

  2. (建議) 為即將推出的 App Check 強化防護做好準備 (又稱「重送保護」)。

  3. (必要) 發布應用程式給實際使用者前,請啟用App Check強制執行功能。

Flutter 必須進行特殊例項化

按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。

在 Flutter 應用程式中使用 App CheckFirebase AI Logic 時,您需要在例項化期間明確傳入 App Check,如下所示:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

為即將推出的強化防護功能做好準備

目前僅適用於 Apple 平台 (v12.2.0 以上版本)、Android (v17.2.0 以上版本,BoM v34.2.0 以上版本) 和網頁 (v12.3.0 以上版本)。
我們將在接下來幾週內,陸續推出其他平台的支援功能。

根據預設,App Check 會使用工作階段權杖,這類權杖的存留時間 (TTL) 可設定為 30 分鐘7 天。這些工作階段權杖會由 App Check SDK 緩存,並隨應用程式的要求一併傳送。

日後 App Check 會新增選項,讓您為 Firebase AI Logic 啟用重播保護機制 (與 App Check 目前為部分其他資源提供的支援類似)。啟用重播防護功能後,系統會透過下列方式強化保護措施:

  • App Check 只允許附有特殊權杖 (稱為「限用權杖」) 的要求。

  • 驗證有限用途權杖後,系統會耗用該權杖,因此權杖只能使用一次,可防範重複驗證攻擊。

為防範重播攻擊,建議您在設定 App Check啟用使用次數受限的權杖。這樣一來,當重播保護機制推出後,您就能更快啟用這項功能,因為更多使用者會使用可傳送有限用途權杖的應用程式版本。

如果您現在在應用程式中啟用使用次數受限的權杖 (但重播保護機制尚未推出),請注意下列事項:

  • App Check 不會封鎖有效工作階段權杖的使用。

  • 與工作階段權杖相同,App Check SDK 會快取有限用途權杖,並隨要求一併傳送。與預設工作階段權杖相比,這些使用次數受限的權杖可提供少量額外保護,因為使用次數受限的權杖 TTL 較短 (僅 5 分鐘,且無法調整),工作階段權杖則較長。

  • 雖然有限制用途的權杖有效時間為 5 分鐘,但 SDK 仍會為每個要求產生新權杖。這項程序可能會導致要求延遲。

不過,如果 Firebase AI Logic 日後提供重播保護功能 (且您啟用這項功能),您就無法使用工作階段符記,也無法重複使用有限用途的符記。請注意,系統仍會為每個要求產生新權杖,因此會造成額外延遲。

啟用使用次數有限的權杖

按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。

如要啟用受限用途權杖,請按照下列步驟操作:

  1. 導入 App Check,並確認已為應用程式啟用 App Check 強制執行

  2. 在應用程式的例項建立期間,將 useLimitedUseAppCheckTokens 參數設為 true,即可啟用受限制的權杖:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    即將推出的版本將支援在 Flutter 應用程式中使用有限用途權杖。請稍後再回來查看!

    Unity

    未來版本將支援在 Unity 遊戲中使用有限用途權杖。請稍後再回來查看!

瞭解 Firebase AI Logic 如何與 App Check 整合

如要使用 Firebase AI Logic SDK,必須在 Firebase 專案中啟用 Firebase AI Logic API (firebasevertexai.googleapis.com)。這是因為 Firebase AI Logic SDK 發出的要求會先傳送至 Firebase AI Logic 伺服器,該伺服器會做為 Proxy 閘道,在要求獲准繼續前往所選「Gemini API」供應商的後端和 API,以存取 GeminiImagen 模型「之前」進行 Firebase App Check 驗證。