| 选择平台: | iOS+ Android Web Flutter |
本页介绍了如何使用 reCAPTCHA Enterprise 提供方在 Apple 平台应用中设置 App Check。App Check 有助于确保 只有您的应用可以访问项目的后端资源。 如需了解详情,请查看我们的 概览App Check。
App Check 要求使用 基于分数的 reCAPTCHA 密钥,因此 对用户来说是不可见的。这意味着 reCAPTCHA Enterprise 提供方永远不会要求用户进行验证。
如果您的应用场景需要 App Check 未实现的 reCAPTCHA Enterprise 功能,或者您想将 App Check 与自己的自定义提供方搭配使用,请参阅实现自定义 App Check 提供方。App Check
1. 设置您的 Firebase 项目
如果尚未添加, 将 Firebase 添加到您的 Apple 项目。
在 Google Cloud 控制台中,前往 Fraud Defense 页面, 然后针对 reCAPTCHA Enterprise 提供方执行以下操作:
确保您位于正确的项目中(请参阅屏幕顶部的项目选择器)。
如果系统提示,请启用 reCAPTCHA Enterprise API。
创建 iOS 类型的密钥,并指定应用的软件包 ID(例如
com.example.my_app)。请确保您输入的软件包 ID 与您在 Firebase 项目中创建 Firebase Apple 应用时提供的软件包 ID 相同。 软件包 ID 值区分大小写。
对于 App Check,每个软件包 ID 只能对应一个 single reCAPTCHA 密钥。
如需了解详细说明,请参阅 创建基于分数的 reCAPTCHA 密钥。
记下此密钥。您需要在注册流程中将其添加到 Firebase 控制台中。
在 Firebase 控制台中,依次前往 安全性 > App Check。
在 应用 标签页中,注册您的 Apple 平台应用,以便将 App Check 与 reCAPTCHA Enterprise 提供方搭配使用。 您需要提供在 Google Cloud 控制台中获取的密钥。
可选: 设置令牌存留时间 (TTL)。
在应用注册设置中,为 App Check提供方颁发的令牌设置自定义存留时间 (TTL)。您可以将 TTL 设置为介于 30 分钟和 7 天之间的任何值。更改此值时,请注意权衡以下几个方面:
- 安全性:较短的 TTL 可以提供更强的安全性,因为它可以缩短攻击者可能滥用已泄露或者已被拦截的令牌的时长。
- 性能:较短的 TTL 意味着您的应用将更频繁地执行证明操作。由于每次执行应用证明过程都会增加网络请求的延迟时间,因此短 TTL 可能会影响应用的性能。
- 配额和费用:较短的 TTL 和频繁的重新证明会更快地耗尽您的配额,而对于付费服务,费用可能更高。请参阅配额和限制。
对于大多数应用而言,默认的 TTL(1 小时)比较合理。请注意,App Check 库会在达到 TTL 时长约一半时刷新 令牌。
可选:配置高级设置。
点击保存 。
(可选)配置高级设置
当用户打开您的应用时,reCAPTCHA Enterprise 会评估用户互动在密钥下所带来的风险等级,并返回一个介于 0.0 和 1.0 之间的得分,增量为 0.1。
- 0.0 分表示互动风险高,可能具有欺诈性。
- 1.0 分表示互动风险低,很可能是合法的。
App Check 借助 App Check,您可以配置 应用风险阈值 ,以便可调整 您对此风险的容忍度。
对于大多数应用场景,建议使用默认阈值 0.5 。如果 您的应用场景需要调整,您可以在 Firebase 控制台中为每个 应用配置此值(依次前往安全性 > App Check)。 请务必展开并查看下面有关配置应用风险阈值的一些 重要注意事项 。
2. 将 App Check SDK 添加到您的应用
使用 Swift Package Manager (SPM) 安装和管理 Firebase 依赖项。 如果您已在使用 Firebase,请确保您的 Firebase 软件包为 v12.17.0 或更高版本。
在 Xcode 中,打开您的应用项目。
添加 Firebase 库:
依次前往文件 > 添加软件包 。
出现提示时,添加 Firebase Apple 平台 SDK 代码库:
https://github.com/firebase/firebase-ios-sdk选择最新的 SDK 版本(v12.17.0 或更高版本)。
选择
FirebaseAppCheck库。点击添加软件包 。Xcode 将解析并下载依赖项。
出现提示时,将库添加到应用目标。
添加 reCAPTCHA Enterprise 库:
返回文件 > 添加软件包
出现提示时,添加 reCAPTCHA Enterprise SDK 代码库:
https://github.com/GoogleCloudPlatform/recaptcha-enterprise-mobile-sdk选择
RecaptchaEnterprise库。点击添加软件包 。出现提示时,将库添加到应用目标。
3. 初始化 App Check
在应用中,您需要先初始化 App Check,然后才能使用任何其他 Firebase 服务。
创建 RecaptchaProviderFactory 的实例,传入
reCAPTCHA 密钥,然后将 App Check 配置为使用该实例:
let providerFactory = RecaptchaProviderFactory(siteKey: "SITE_KEY")
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
4. 监控指标并启用强制执行
在应用中设置 App Check 后,开始将更新后的 应用分发给用户。
更新后的客户端应用会开始将 App Check 令牌随其发出的每个 请求一起发送到 Firebase。不过,App Check 不会阻止具有 无效令牌的请求,直到强制执行 App Check。
监控指标
**在启用强制执行之前**,请确保这样做不会干扰您的 现有合法用户。不过,如果您发现自己的应用资源被非法使用,建议您尽快启用强制执行。
为帮助您做出相关决策,建议您查看自己使用的服务的 App Check 指标:
- 监控 App Check 请求指标,适用于 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API 和 Places API(新版)。
- 监控 Cloud Functions 的 App Check 请求指标。
启用 App Check 违规处置
在了解 App Check 对用户有何影响并为后续操作做好准备 之后,您便可以启用 App Check 强制执行:
- 为App Check启用违规处置,适用于 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API 和 Places API(新版)。
- 为 Cloud Functions 启用 App Check 强制执行。
在调试环境中使用 App Check
App Check 会将某些环境归类为无效,例如开发期间来自 模拟器 / 仿真器 的请求或来自持续集成 (CI) 环境的请求。
如需在强制执行 App Check 后在这些类型的环境中运行应用, 您需要创建应用的调试 build,该 build 使用 App Check 调试提供方,而不是生产证明提供方。
如需了解详情,请参阅 将 App Check 与调试提供方搭配使用(Apple 平台)。
价格
App Check 每次应用刷新其 App Check 令牌时,都会代表您创建评估,以验证用户的 响应令牌。对于超出免费配额的每项创建的评估,我们会对您的 Firebase 项目收费。如需了解详情,请参阅 reCAPTCHA 价格。
默认情况下,您的应用每 1 小时 会刷新此令牌两次。如需 控制应用刷新 App Check 令牌的频率(以及新评估的 创建频率),您可以 配置令牌 TTL。