Jak*_*uin 9 ios firebase firebase-realtime-database firebase-app-check
我最近决定为我为小于 300 个用户组运行的 iOS 应用启用 Firebase 上的 App Check。对于 iOS 项目,Firebase 有两个选项:App Check、DeviceCheck 和 App Attest。通过从我的 Apple 开发者帐户上传我的身份验证密钥,我能够毫无问题地打开 DeviceCheck。一切似乎都正常工作,但我不明白幕后到底发生了什么,因为 Firebase 文档仅解释了如何设置它,我想确保它正常工作。
有人可以向我解释一下设备检查在这种情况下如何与 Firebase 一起工作,以及它与 Firebase 也支持的 iOS 应用程序证明有何不同?
Firebase iOS 应用检查文档:
nco*_*ke3 20
使用 iOS DeviceCheck 的 Firebase App Check 如何工作?
简而言之,SDK 在发出请求时会向 AppCheck SDK 请求特殊的 AppCheck 令牌。当App Check配置为使用DeviceCheck时,它将在DeviceCheck框架的帮助下生成请求的令牌。请注意,DeviceCheck 是 Apple 创建的框架。
我不明白幕后到底发生了什么......
这里有一些更详细的信息可以帮助澄清问题:
AppCheck SDK 用于AppCheckProviders生成应用程序检查令牌。s有 4 种类型AppCheckProvider:
对于某些支持 AppCheck 强制执行的 Firebase SDK(例如 Firestore),它们会在发送请求时向 AppCheck SDK 询问 AppCheck 令牌。AppCheck SDK 使用上面列出的 4 个选项之一生成令牌AppCheckProviders。您可以使用 AppCheck 的AppCheck.setAppCheckProviderFactory(_:)API 自定义使用哪个提供程序。我在这个答案中写了更多关于它的目的的内容。
...我想确保它正常工作
如果您能够在 Firebase 控制台中查看请求指标,则表明 AppCheck 已正确实现并且正在运行。如果您已启用强制执行,您应该开始在指标图表中看到一些强制请求。
有人可以向我解释一下设备检查在这种情况下如何与 Firebase 一起工作吗?
因此,当 AppCheck SDK 使用(此提供程序是默认提供程序!)时,AppCheck SDK 将在 Apple 的DeviceCheckDeviceCheckProvider框架的帮助下创建 AppCheck 令牌。
它(设备检查)与 Firebase 也支持的 iOS 应用程序证明有何不同?
这里的答案可以在 Apple 的DeviceCheck文档中找到。
简而言之,区别在于两个名字。
设备检查对于验证请求是否源自实际设备非常有用。例如,假设您有一个 iOS 应用程序,并且正在将 Firebase AppCheck 与DeviceCheckProvider. 如果启用强制执行,则只有来自实际设备的请求才会成功。因此,如果我尝试通过curl从命令行发出请求来访问您的后端 API,它应该会被拒绝,因为没有令牌来确认该请求是否来自实际设备。这可以保护后端免受此类滥用。
应用程序证明是设备检查框架的一部分,通过证明请求来自应用程序的有效实例来提供更高级的验证。要了解为什么这很有用,请考虑您的 iOS 应用程序配置为使用 Firebase AppCheck 和DeviceCheckProvider. 假设黑客将您的应用程序重新编译到实际设备上。在这种情况下,DeviceCheck 的有效性会降低,因为从该恶意副本发送的请求在技术上来自“实际设备”,因此将生成有效令牌。App Attest 的更高级证明可以证明请求来自应用程序的有效实例。在此示例中,黑客的副本不是有效实例。
此时,您可能想知道当您可以使用更高级的 App Attest 时为什么还要使用 DeviceCheck,原因是操作系统可用性:App Attest 仅适用于 iOS 14.0+。
我希望这能回答您的问题!
| 归档时间: |
|
| 查看次数: |
3702 次 |
| 最近记录: |