android - 使用自定义后端检查和播放应用程序完整性

标签 android firebase firebase-app-check safetynet google-play-integrity-api

我们在 Android 应用中使用 SafetyNet Attestation API,现在计划从 起迁移到 App Check/Play Integrity API >SafetyNet 已被弃用。

据我从文档中了解到,流程几乎保持不变:您从 SDK 请求 token /证明,然后将其与所有请求一起发送到您的可信后端(作为 HTTP header ,例如实例),其他一切都在那里处理。

这里棘手的事情是如何在客户端获取 token :文档提到了两种不同的方法。第一个(也可能是“主要”)在“保护非 Firebase 资源”doc 中进行了描述。 :

 FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }

另一方面,“从 SafetyNet 迁移”doc描述了一种不同的方法:

val nonce: String = ...
val integrityManager = IntegrityManagerFactory.create(applicationContext)
val integrityTokenResponse: Task<IntegrityTokenResponse> =
    integrityManager.requestIntegrityToken(
        IntegrityTokenRequest.builder()
             .setNonce(nonce)
             .build()
).addOnSuccessListener { 
   val token = it.token()
   ...
}

因此,我不太清楚为什么建议现有 SafetyNet 用户与其他人相比使用 Play Check SDK 中的不同 API:不应该为每个人使用相同的 API 吗?任何人都可以建议,这两种方法有什么区别以及它们的用例是什么?不幸的是,文档在这方面不太清楚:(

最佳答案

简而言之:Firebase 的 AppCheck 和 Google Play Integrity API 是两个不同的东西:AppCheck 是一个 Firebase 工具,由多个层和工具组成,可以针对不同的目的进行设置。作为这些层之一,它支持 Google Play Integrity API 作为证明提供商。 您发布的“从 SafetyNet 迁移”链接来自 Google 官方文档,描述了他们拥有的 Google Play Integrity API。 如果您仅使用 SafetyNet API,而不使用包含 SafetyNet 提供商的 AppCheck,则可以直接迁移到 Play Integrity API。

关于android - 使用自定义后端检查和播放应用程序完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74813815/

相关文章:

android - 标签主机中不显示图像

android - Google Play 结算安全建议是否仅用于防止盗版?

Firebase 存储如何存储和检索图像

javascript - Firebase 函数更改存储中上传文件的文件名

flutter - 使用 flutter 处理 Appcheck 时出错

javascript - 如何在 React 中使用 Firebase 应用程序检查。 403 错误

android - 在 Android 中编码 SMS 消息

android - 获取/更改我的应用程序的命名空间?

swift - 使用 Firebase 登录时为 "An error occurred while accessing the keychain"