在不安装android的服务器上执行签名验证任务

我想在android中实现inappbilling,因为我们希望在我们的服务器上执行签名验证。任何人都可以让我知道我们需要遵循的过程来验证Java中的签名。我还想要测试和生产请求我们的服务器打击以验证签名。

0
额外 编辑
意见: 1

1 答案

该过程与Android中的完全相同。您必须将签名数据和签名发送到您的服务器,并在那里进行验证。例如,如果您使用的是servlet,则可以从Android执行POST,然后在servlet中获取签名signedData 请求参数。然后使用 Signature 类和您的公钥进行验证。 IAB响应还包括一个随机数(随机生成的数字),为了能够验证这一点,您还需要在服务器上生成随机数。简而言之:

  1. Android客户端向服务器请求一个随机数
  2. 服务器生成并保存数据库的随机数,然后将其返回给客户端
  3. Android客户端使用nonce发送IAB请求
  4. Android客户端将IAB响应(签名和signedData)发送到服务器
  5. 服务器验证签名。如果无效,则返回错误。
  6. 如果有效,提取nonce并检查它是否是一个服务器已生成。
  7. 服务器返回OK和任何关联的内容(如果您购买了电影等)
  8. 客户接受交易并启用功能/获取内容等。

没有测试或生产网址,您必须从Android应用发送数据。

0
额外
感谢尼古拉快速详细的响应。唯一不能理解的是服务器如何验证客户端发送的签名是否有效。请给我们更多的解释。就像在iphone中我们将点击一些沙箱的网址进行测试和生产的网址进行测试签名,我们有任何这样的网址,谷歌提供哪些帮助服务器验证签名
额外 作者 Remmyabhavan,
你可能会误解整个系统的工作原理。订单数据由Android Market/Google Play服务器使用为特定开发人员(您)生成的专用密钥进行签名。您的应用程序会收到签名的数据,并可以使用相应的公钥验证签名,或将其发送给您的服务器进行验证。这个过程基本上是一样的,服务器的好处是你可以保证你的验证码的安全。谷歌没有提供在线验证,因此没有沙箱/生产URL供您使用。
额外 作者 Nikolay Elenkov,
@NikolayElenkov Nikolay基本上我有一个应用程序,我想提供禁用广告的订阅选项。在这个过程中的哪一点我将使用这个服务器端验证?
额外 作者 Dannyboy,