【发布时间】:2015-11-09 10:43:42
【问题描述】:
我正在尝试锁定我的 Cloud Endpoints API,以便只有我的 Android 应用可以使用它,但是,我不想使用 Oauth2+Google 帐户来执行此操作。原因是我不想要求我的用户拥有谷歌帐户才能登录应用程序。例如,Snapchat 使用 Google App Engine,但不需要您拥有 Google 电子邮件来使用他们的应用程序 - 您只需创建自己的用户名和密码。
我已经阅读了几篇提供建议的帖子:
How do I restrict Google App Engine Endpoints API access to only my Android applications?
Authenticate my "app" to Google Cloud Endpoints not a "user"
How do I protect my API that was built using Google Cloud Endpoints?
但未能找到满意的答案。从我阅读的所有内容来看,我正在考虑为我的所有 Cloud Endpoints API 方法设置一个“令牌”参数,这只是我自己的 64 个字符长的随机字符串。在服务器端,我会将传入的令牌字符串与服务器代码中存储在服务器上的内容进行比较。如果他们匹配,宾果!您有权运行该方法。如果他们不这样做,你会得到一个错误。
上述方法的一个潜在问题是,有人可能会尝试反编译我的 APK,将该令牌存储在我的 android 代码中的痛苦文本中,然后调用我的 API。
我读到 parse.com 也可能存在这个问题,他们的特殊令牌可以在 APK 中反编译。他们通过提供 ACL (access control lists) 解决了这个问题。
但我真的想使用 Google Cloud Endpoints 而不是 Parse。现在,必须拥有 Google 帐户的限制真的很烦人......人们有没有找到解决这个问题的方法?
【问题讨论】:
标签: android api google-app-engine parse-platform google-cloud-endpoints