開始在 Apple 平台上,搭配使用 App Check 和 App Attest

本頁將說明如何在 Apple 應用程式中使用 App Check 內建 App Attest 供應商啟用 App Check 後,您就能確保只有您的應用程式可以存取專案的 Firebase 資源。查看 這項功能的總覽

App Check 會使用 App Attest 驗證 Firebase 服務的要求是否來自您的應用程式。App Check 目前不會使用 App Attest 分析詐欺風險

如要透過自訂服務供應商使用 App Check,請參閱 導入自訂 App Check 供應器

1. 設定 Firebase 專案

  1. 您必須使用 Xcode 12.5 以上版本才能使用 App Attest。

  2. 如果尚未將 Firebase 新增至 Apple 專案,請新增 Firebase

  3. Firebase 控制台的 App Check 專區中,為應用程式註冊透過 App Attest 供應商使用 App Check

    通常您需要註冊專案的所有應用程式,因為 允許對 Firebase 產品強制執行;只有已註冊的應用程式可以 存取產品的後端資源

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

    • 安全性:縮短存留時間可提供更強的安全性,因為這樣一來,攻擊者就無法在較短的時間內濫用遭洩漏或攔截的權杖。
    • 效能:縮短存留時間 (TTL) 越短,應用程式就越能執行認證 經常更新由於應用程式認證程序每次執行時都會為網路要求增加延遲時間,因此 TTL 時間過短可能會影響應用程式效能。
    • 配額和費用:較短的 TTL 和頻繁的重複認證會讓配額耗盡得更快,而付費服務可能會產生更多費用。請參閱「配額與限制」。

    預設存留時間 1 小時 對大多數應用程式而言都是合理的做法。請注意,重新整理 App Check 程式庫 權杖的 75 倍。

2. 將 App Check 程式庫新增至應用程式

  1. App Check 的依附元件新增至專案的 Podfile

    pod 'FirebaseAppCheck'

    或者,您也可以使用 Swift 套件 Manager

    請確認您也使用其他依附的 Firebase SDK 的最新版本。

  2. 執行 pod install,然後開啟建立的 .xcworkspace 檔案。

  3. 在 Xcode 中,將 App Attest 功能新增至應用程式。

  4. 在專案的 .entitlements 檔案中,將 App Attest 環境設為 production

3. 初始化 App Check

您必須先初始化 App Check,才能使用任何其他 Firebase SDK。

首先,請編寫 AppCheckProviderFactory 的實作項目。具體實作方式會因用途而異。

舉例來說,如果您只有 iOS 14 以上版本的使用者,可以一律建立 AppAttestProvider 物件:

Swift

注意:這項 Firebase 產品不適用於 watchOS 目標。

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Objective-C

注意:這項 Firebase 產品不適用於 watchOS 目標。

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

或是在 iOS 14 以上版本中,AppAttestProvider建立物件 返回舊版 DeviceCheckProvider

Swift

注意:這項 Firebase 產品不適用於 watchOS 目標。

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

Objective-C

注意:這項 Firebase 產品不適用於 watchOS 目標。

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

實作 AppCheckProviderFactory 類別後,請設定 App Check 以便使用:

Swift

注意:這項 Firebase 產品不適用於 watchOS 目標。

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objective-C

注意:這項 Firebase 產品不適用於 watchOS 目標。

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

後續步驟

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

新版用戶端應用程式會開始傳送 App Check 個符記, 但 Firebase 產品不需要權杖 您必須在App Check Firebase 控制台。

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

不過,啟用強制執行功能之前,請先確認這項操作不會 幹擾現有的合法使用者另一方面,如果您發現 如果您對應用程式資源都很可疑,不妨啟用強制執行功能

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

啟用「App Check」強制執行功能

瞭解 App Check 對使用者的影響,您可以做好準備 下一步,您可以啟用 App Check 強制執行功能:

在偵錯環境中使用 App Check

只要在為「App Check」註冊應用程式後, 「App Check」通常不會歸類為有效環境的應用程式。 例如開發期間的模擬工具,或從持續整合 (CI) 匯入的資料 您就能為應用程式建立偵錯版本,該應用程式會使用 App Check 偵錯提供者而非真正的認證提供者。

請參閱「搭配 Apple 平台上的偵錯提供者使用 App Check」一文。