【问题标题】:How does Firebase App Check using iOS DeviceCheck work?Firebase App Check 使用 iOS DeviceCheck 如何工作?
【发布时间】:2022-02-09 04:31:19
【问题描述】:

我最近决定为我为一个小于 300 名用户组运行的 iOS 应用启用 Firebase 上的 App Check。对于 iOS 项目,Firebase 有 App Check DeviceCheck 和 App Attest 两个选项。通过从我的 Apple Developer 帐户上传我的 Auth Key,我能够毫无问题地打开 DeviceCheck。一切似乎都没有问题,但我不明白究竟发生了什么,因为 Firebase 文档只解释了如何设置它,我想确保它正常工作。

有人可以向我解释一下 Device Check 在这种情况下如何与 Firebase 一起工作,以及它与 Firebase 也支持的 iOS App Attest 有何不同?

Firebase iOS 应用检查文档:

Firebase App Check DeviceCheck Guide

Firebase App Check App Attest Guide

【问题讨论】:

    标签: ios firebase firebase-realtime-database firebase-app-check


    【解决方案1】:

    使用 iOS DeviceCheck 进行 Firebase 应用检查的工作原理是什么?

    简而言之,SDK 会在发出请求时向 AppCheck SDK 索取特殊的 AppCheck 令牌。当使用 App Check 配置为使用 DeviceCheck 时,它将在 DeviceCheck 框架的帮助下生成请求的令牌。

    我不明白幕后到底发生了什么......

    这里还有一些细节可以帮助澄清事情:

    AppCheck SDK 使用AppCheckProviders 生成应用检查令牌。 AppCheckProviders 有 4 种类型:

    1. AppAttestProvider
    2. DeviceCheckProvider
    3. AppCheckDebugProvider
    4. Custom providers that you create as a subclass of AppCheckProvider

    对于某些支持 AppCheck 强制执行的 Firebase SDK(即 Firestore),它们会在发送请求时向 AppCheck SDK 询问 AppCheck 令牌。 AppCheck SDK 使用上面列出的 4 个AppCheckProviders 之一生成令牌。您可以使用 AppCheck 的 AppCheck.setAppCheckProviderFactory(_:) API 自定义使用哪个提供程序。我在answer 中写了更多关于它的目的。

    ...我想确保它正常工作

    如果您能够在 Firebase 控制台中看到 request metrics,则表明 AppCheck 已正确实施且正常工作。如果您启用了强制执行,您应该会开始在指标图表中看到一些强制执行的请求。

    有人可以向我解释一下设备检查在这种情况下如何与 Firebase 一起工作吗...

    因此,当 AppCheck SDK 使用 DeviceCheckProvider(此提供程序是默认提供程序!)时,AppCheck SDK 将在 Apple 的 DeviceCheck 框架的帮助下创建 AppCheck 令牌。

    它(设备检查)与 Firebase 也支持的 iOS App Attest 有何不同?

    这里的答案可以在 Apple 的 DeviceCheck 文档中找到。

    简而言之,区别就在于这两个名字。

    设备检查可用于验证请求来自实际设备。例如,假设您有一个 iOS 应用,并且正在使用带有 DeviceCheckProvider 的 Firebase AppCheck。如果启用强制执行,则只有来自实际设备的请求才会成功。因此,如果我尝试通过curl'从命令行发出请求来访问您的后端 API,它应该会被拒绝,因为没有令牌来确认请求来自实际设备。这可以保护后端免受此类滥用。

    App Attest 是 Device Check 框架的一部分,通过 证明请求来自 valid instance of your app 来提供更高级的验证。要了解这为何有用,请考虑将您的 iOS 应用程序配置为使用带有 DeviceCheckProvider 的 Firebase AppCheck。假设黑客将您的应用程序重新编译到实际设备上。在这种情况下,DeviceCheck 的有效性会降低,因为从该恶意副本发送的请求在技术上来自“实际设备”,因此将生成有效令牌。 App Attest 更高级的证明可以证明请求来自您应用的有效实例。在此示例中,黑客的副本不是有效实例。

    此时,您可能想知道当您可以使用更高级的 App Attest 时为什么还要使用 DeviceCheck,原因是操作系统可用性:App Attest 仅适用于 iOS 14.0+。

    我希望这能回答您的问题! ?

    【讨论】:

      猜你喜欢
      • 2022-12-19
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2019-07-21
      • 1970-01-01
      • 2022-10-08
      • 2018-02-09
      相关资源
      最近更新 更多