Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

此頁面向您展示如何使用內置的 App Attest 提供程序在 Apple 應用中啟用 App Check。當您啟用 App Check 時,您有助於確保只有您的應用可以訪問您項目的 Firebase 資源。請參閱此功能的概述

App Check 使用App Attest來驗證對 Firebase 服務的請求是否來自您的真實應用。 App Check 目前不使用 App Attest 來分析欺詐風險

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

1. 設置您的 Firebase 項目

  1. 您需要 Xcode 12.5+ 才能使用 App Attest。

  2. 如果您還沒有這樣做,請將 Firebase 添加到您的 Apple 項目中。

  3. 在 Firebase 控制台的App Check部分註冊您的應用以使用 App Attest 提供程序使用 App Check。

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

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

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

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

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

  1. 將 App Check 的依賴項添加到項目的Podfile

    pod 'FirebaseAppCheck'

    或者,您也可以改用Swift 包管理器

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

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

  3. 在 Xcode 中,將App Attest功能添加到您的應用程序。

  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 發出的每個請求發送 App Check 令牌,但 Firebase 產品不需要令牌有效,直到您在 Firebase 控制台的 App Check 部分啟用強制執行。

監控指標並啟用強制執行

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

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

啟用應用檢查強制

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

在調試環境中使用 App Check

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

請參閱在 Apple 平台上通過調試提供程序使用 App Check