我正在搜索一个意思是将API调用仅限于我的Android客户端,在它说使用OAuth的文档中,但似乎是Google帐户登录。
我怎样才能(或使用此OAuth)与每种类型的用户,他们拥有Google帐户(@ gmail.com)和没有用户?
感谢您的帮助。
答案 0 :(得分:1)
oAuth确实用于验证用户,而不是应用程序。我担心在这种情况下确实没有一种很好的方法来验证应用程序,至少在没有像YubiKey和你的应用程序那样分发加密安全,强化的质询 - 响应硬件的情况下。
对于任何此类网络界面而言,这是一个根本难以解决的问题,绝不仅限于Google Cloud Endpoints。最重要的是,您无法将您的端点的呼叫者限制为仅创建您创建的应用程序,尤其是当该应用程序分发给许多最终用户时,其中一些最终用户知道如何转储内存或使用数据包嗅探器。
据我所知,可以做的最好的事情是为调用添加开发人员令牌。这是一个专属字符串,您的应用程序已知,并且不会由您的应用程序以外的任何其他提供。这只是每个远程调用的附加参数。这样一个令牌当然可以由一个有轻微感兴趣的对手从你的应用程序中提取,但能力最低,但它至少会阻止其他友好的开发人员在你不介意这样做的假设下随便调用你的API。如果你真的很聪明,你可能会设计一种机制,花一天时间而不是一小时,但我怀疑你能做得更好。
鉴于这种针对恶意行为者的方法存在缺陷,我认为Google Cloud Endpoints中没有任何内置支持,但我认为service account已接近尾声。