【发布时间】:2016-05-06 03:43:20
【问题描述】:
我正在寻找一种将 API 调用限制在我的 Android 客户端的方法,在文档中它说要使用 OAuth,但它似乎是 Google 帐户登录。
我怎样才能对每种类型的用户执行此操作(或使用此 OAuth),他们拥有 Google 帐户 (@gmail.com) 的用户和没有的用户?
感谢您的帮助。
【问题讨论】:
标签: google-app-engine oauth-2.0 google-cloud-endpoints
我正在寻找一种将 API 调用限制在我的 Android 客户端的方法,在文档中它说要使用 OAuth,但它似乎是 Google 帐户登录。
我怎样才能对每种类型的用户执行此操作(或使用此 OAuth),他们拥有 Google 帐户 (@gmail.com) 的用户和没有的用户?
感谢您的帮助。
【问题讨论】:
标签: google-app-engine oauth-2.0 google-cloud-endpoints
oAuth 确实是用于验证用户,而不是应用程序。恐怕在这种情况下确实没有一种对应用程序进行身份验证的好方法,至少在没有与您的应用程序一起分发加密安全、强化的挑战响应硬件(如 YubiKey)的情况下是这样。
对于任何此类 Web 界面来说,这都是一个根本性的难题,而不仅限于 Google Cloud Endpoints。最重要的是,您不能真正将端点的调用者限制为您创建的应用程序,尤其是当该应用程序分发给许多最终用户时,其中一些人知道如何转储内存或使用数据包嗅探器。
据我所知,最好的办法是在调用中添加开发人员令牌。这是您的应用程序已知的私有字符串,并且不会由您的应用程序以外的任何东西提供。这只是每个远程调用的附加参数。这样一个令牌当然可以由具有最低能力的稍微感兴趣的对手从您的应用程序中提取,但它至少可以防止其他友好的开发人员在您不介意他们这样做的情况下随意调用您的 API。如果你真的很聪明,你可能会设计一个需要一天而不是一个小时的机制,但我怀疑你能做得更好。
鉴于这种方法对恶意行为者的弱点,我认为 Google Cloud Endpoints 中没有对此的任何内置支持,尽管我认为 service account 接近。
【讨论】: