0

我计划使用 Google 电子钱包(应用内购买)来销售对我基于 Web 的应用程序的订阅。钱包回调我的服务器生成的服务器(基于 JWT)。

作为回调实现的一部分,我想确保除了 Google Wallet 之外没有人可以成功调用回发处理程序。

据我所知,我所能做的就是信任卖家 ID 和卖家数据(可能包含有关我的客户等的信息),以确保回电是合法的。

我目前的计划是加密卖方数据字段,因此希望只有我的应用程序可以读取该字段中的数据。是否有任何其他最佳实践/想法可能值得考虑以确保回发处理程序尽可能安全。

该应用程序是一个 Python WSGI 应用程序,在 Apache(当然是 SSL)下运行。

谢谢你的时间。

4

1 回答 1

1

请注意,回发 JWT 使用您的卖家密码签名。只有您和 Google 知道卖家秘密。您可以通过确保使用卖方机密(下文有更多详细信息)对其进行签名来验证回发 JWT 的真实性。

另请注意,回发 JWT 与您的服务器生成的订单 JWT 不同,因为它还包含订单 ID。在不知道卖家秘密的情况下,黑客将无法重新使用订单 JWT 来生成有效的回发 JWT。

当您收到回发 JWT 时,您可以通过验证他的签名来确保它是由 Google 发送的。JWT 由“Header.Claims.Signature”组成。“签名”是使用带有卖家密码的 SHA-256 算法生成的。

有关更多详细信息和代码示例,请参见以下内容:

JWT 规范: http ://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#anchor4

Python 示例: https ://developers.google.com/commerce/wallet/digital/docs/samples#iap-py

JWT 解码器: https ://developers.google.com/commerce/wallet/digital/docs/jwtdecoder

于 2013-03-09T19:18:09.433 回答