欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

开始在 Android 上使用带有 SafetyNet 的 App Check

此页面向您展示如何使用内置的 SafetyNet 提供程序在 Android 应用程序中启用应用程序检查。当您启用 App Check 时,您有助于确保只有您的应用可以访问您项目的 Firebase 资源。请参阅此功能的概述

如果您想将 App Check 与您自己的自定义提供程序一起使用,请参阅实现自定义应用程序检查提供程序

1. 设置您的 Firebase 项目

  1. 如果您还没有这样做,请将 Firebase 添加到您的 Android 项目中。

  2. 在 Firebase 控制台的App Check部分注册您的应用以使用 SafetyNet 提供商的 App Check。您需要提供应用签名证书的 SHA-256 指纹

    您通常需要注册项目的所有应用,因为一旦您为 Firebase 产品启用强制执行,只有已注册的应用才能访问该产品的后端资源。

  3. 可选:在应用注册设置中,为提供商发布的应用检查令牌设置自定义生存时间 (TTL)。您可以将 TTL 设置为 30 分钟到 7 天之间的任何值。更改此值时,请注意以下权衡:

    • 安全性:较短的 TTL 提供了更强的安全性,因为它减少了泄露或拦截的令牌可能被攻击者滥用的窗口。
    • 性能:较短的 TTL 意味着您的应用将更频繁地执行证明。由于应用程序证明过程每次执行都会增加网络请求的延迟,因此较短的 TTL 可能会影响应用程序的性能。
    • 配额和成本:较短的 TTL 和频繁的重新证明会更快地耗尽您的配额,而对于付费服务,可能会花费更多。请参阅配额和限制

    对于大多数应用程序来说, 1 小时的默认 TTL 是合理的。请注意,App Check 库以大约一半的 TTL 持续时间刷新令牌。

2. 将 App Check 库添加到您的应用程序

在您的模块(应用级)Gradle 文件(通常是app/build.gradle )中,声明 App Check Android 库的依赖项:

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.2'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.2'
}

3.初始化应用检查

将以下初始化代码添加到您的应用中,以便它在您使用任何其他 Firebase SDK 之前运行:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        SafetyNetAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    SafetyNetAppCheckProviderFactory.getInstance()
)

下一步

在您的应用中安装 App Check 库后,开始将更新的应用分发给您的用户。

更新后的客户端应用将开始向 Firebase 发出的每个请求发送 App Check 令牌,但 Firebase 产品不需要令牌有效,直到您在 Firebase 控制台的 App Check 部分启用强制执行。

监控指标并启用强制执行

但是,在启用强制执行之前,您应该确保这样做不会破坏您现有的合法用户。另一方面,如果您发现对应用资源的使用可疑,您可能希望尽快启用强制执行。

为了帮助做出此决定,您可以查看您使用的服务的 App Check 指标:

启用应用检查强制

当您了解 App Check 将如何影响您的用户并准备好继续时,您可以启用 App Check 强制:

在调试环境中使用 App Check

如果在您为 App Check 注册了您的应用程序后,您希望在 App Check 通常不会归类为有效的环境中运行您的应用程序,例如开发期间的模拟器或持续集成 (CI) 环境,您可以创建使用 App Check 调试提供程序而不是真正的证明提供程序的应用程序的调试版本。

请参阅在 Android 上通过调试提供程序使用 App Check