【发布时间】:2014-05-11 13:26:26
【问题描述】:
我有一个预先存在的 iOS 和 Android 应用程序,我正在对其进行更新,其中包括一个 RESTful 服务 API 和用于用户身份验证的 Facebook 登录。该应用程序的一般流程是:
- 用户通过 Facebook 的 SDK“登录”到我的应用,这会将访问令牌返回给我的应用。
- 应用调用 RESTful 服务,包括 Facebook 访问令牌作为参数(使用 HTTPS 和 SSL)
- 被调用的服务将接收到的访问令牌(以及仅存储在我的服务器上的应用程序机密)发送到 Facebook 以验证用户是谁,并基于此执行操作。 Facebook 设置为要求服务器端调用的应用程序机密。
我的应用程序已经流行起来并且已经有几个克隆,我想阻止这些克隆能够使用我的 RESTful API(我相信他们会在我发布更新时尝试这样做)。让我们假设克隆是智能的,使用与我的应用相同的 Facebook 访问令牌(如果可能的话),并且遵循与我的应用类似的模式和调用 API 的频率。
是否有办法确保或几乎确保对我的服务的调用仅来自我的应用程序,而不是克隆?
提前致谢!
【问题讨论】: