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

本頁向您展示如何使用內建的 App Attest 提供者在 Apple 應用程式中啟用 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 專案中,請將其新增至您的 Apple 專案

  3. 在 Firebase 控制台的App Check部分中,透過 App Attest 提供者註冊您的應用程式以使用 App Check。

    您通常需要註冊專案的所有應用,因為一旦為 Firebase 產品啟用強制執行,只有註冊的應用程式才能存取該產品的後端資源。

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

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

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

2. 將 App Check 庫加入您的應用程式中

  1. 將 App Check 的依賴項新增至專案的Podfile

    pod 'FirebaseAppCheck'

    或者,您也可以使用Swift Package Manager

    確保您也使用您依賴的任何其他 Firebase SDK 的最新版本。

  2. 運行pod install並開啟建立的.xcworkspace檔。

  3. 在 Xcode 中,將應用程式證明功能新增到您的應用程式。

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

3. 初始化應用檢查

在使用任何其他 Firebase SDK 之前,您需要初始化 App Check。

首先,編寫AppCheckProviderFactory的實作。您的實作細節將取決於您的用例。

例如,如果您只有 iOS 14 及更高版本的用戶,您可以簡單地建立AppAttestProvider物件:

迅速

注意:此 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

迅速

注意:此 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 來使用它:

迅速

注意:此 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 庫後,開始向您的用戶分發更新的應用程式。

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

監控指標並啟用執行

Before you enable enforcement, however, you should make sure that doing so won't disrupt your existing legitimate users. On the other hand, if you're seeing suspicious use of your app resources, you might want to enable enforcement sooner.

To help make this decision, you can look at App Check metrics for the services you use:

Enable App Check enforcement

When you understand how App Check will affect your users and you're ready to proceed, you can enable App Check enforcement:

Use App Check in debug environments

If, after you have registered your app for App Check, you want to run your app in an environment that App Check would normally not classify as valid, such as a simulator during development, or from a continuous integration (CI) environment, you can create a debug build of your app that uses the App Check debug provider instead of a real attestation provider.

See Use App Check with the debug provider on Apple platforms .