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