离线用例(Android)的订阅验证

时间:2018-02-13 07:44:02

标签: android xamarin.forms xamarin.android in-app-purchase in-app-billing

我用订阅创建了android app(xamarin表单)。我在自己的服务上处理订阅。但有一点,文档引用:

  

请注意,用户希望能够在任何地方使用您的应用   时间,包括可能没有网络连接的时间。   确保您的购买验证方法适用于   离线用例。

如果缺少Internet连接,如何实施此检查? 我的想法是在设备上存储关于当前订阅的“本地标签”(在数据库或文件中)。但这不可靠,容易打破。 我还找到了有关android keystore的信息。但它看起来很复杂。

任何想法和建议。

1 个答案:

答案 0 :(得分:1)

据说存在大量本地存储订阅信息的方法。一种方法是,以不对称的方式加密订阅信息

  • 客户端向服务器发送登录信息以及某种设备代码(IMEI或其他内容)
  • 服务器使用某种许可证代码进行响应,该代码使用私钥和设备代码进行加密
  • 客户端将许可证存储在文件中
  • 使用客户端知道的公钥
  • 解密许可证的内容

可以通过从客户端获取公钥来读取许可文件(毕竟它是公共的),因此如果你真的想确定,你不应该在其中存储任何敏感信息,但它不应该伪造许可证,因为这将需要私钥,这是未知的。由于客户端传递了设备代码,因此无法将许可证文件复制到其他设备。

此外,您可以给许可证一个到期日期,之后客户将被告知xe必须上线续订许可证。

备注:您永远不会相信在您无法完全控制的设备上运行的代码,因此可能始终存在绕过安全措施的方法。