我们在 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/