我试图锁定我的Cloud Endpoints API,以便只有我的Android应用才能使用它,但是,我不想使用Oauth2 + Google帐户来执行此操作。原因是我不想要求我的用户使用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帐户的限制真的令人讨厌......有没有办法解决这个问题?
答案 0 :(得分:0)
构建API以仅接受使用特定密钥签名的应用程序。
我相信此示例展示了其实施方式https://cloud.google.com/cloud/samples/mbs 它不适用于此链接,但互联网上有各种镜像