【问题标题】:google endpoints restrict access to mobile clients only谷歌端点仅限制对移动客户端的访问
【发布时间】:2013-10-16 01:13:47
【问题描述】:

我已经阅读了很多关于这个 google 端点的内容,并且我正在尝试一些不太容易猜到的东西。创建谷歌云端点服务器并部署后,它对任何 HTTP 请求(未经身份验证)都是开放的。在云端点文档(指使用身份验证)中,您可以阅读有关设置 OAuth2.0 以使用 google 帐户对用户进行身份验证的文档,但没有关于将端点服务限制为特定移动应用程序(android 或 ios)并丢弃所有其他 HTTP 的文档要求。那么问题是如何验证移动应用程序(无用户)并防止 HTTP 请求(未验证)?我正在基于 Python 构建我的服务器 API(enpoints)。 谢谢。

【问题讨论】:

    标签: python api mobile google-cloud-endpoints


    【解决方案1】:

    为了将您的 Endpoint 限制为特定应用程序,您可以使用 OAuth2。这是因为 OAuth2 流执行用户身份验证,而 OAuth2 流本身对请求 OAuth2 访问的应用程序进行身份验证。

    这两个客户端示例详细说明了如何在客户端启用经过身份验证的调用。您必须通过 http://cloud.google.com/console/ 在开发者控制台中注册您的应用程序。

    https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-android(在自述文件中的注释之后开始) https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-ios/(自述文件中的第 8 步)

    authedGreeting 是经过身份验证的调用,您将在方法的后端项目中检查 User 对象是否为空。如果为空,则可以立即抛出未经授权的异常。

    https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-java-maven 具体来说,自述文件中的可选步骤 2 告诉 Cloud Endpoints 开始在请求中查找 OAuth2 令牌。如果 Endpoints 公开的方法具有 User 参数。仅当找到 OAuth2 令牌、通常有效并且令牌已颁发给服务类的 API 注释中定义的客户端 ID 时,它才会使用用户实例填充它。

    【讨论】:

      【解决方案2】:

      在设置端点 API 期间,在 clientIds 列表中提供 WEB_CLIENT_IDANDROID_CLIENT_IDIOS_CLIENT_ID 等。这些值告诉 Google App Engine,您的应用程序将响应来自网络浏览器和 Android/iOS 已安装应用程序的 HTTPS 请求。

      当您的客户端首次连接您的服务器时,他们必须获取 OAuth 2.0 令牌以确保通信安全,这就是您在已安装的客户端应用程序中使用 WEB_CLIENT_ID 的原因。这个WEB_CLIENT_ID 是您的 Google Cloud 应用程序所独有的,通过它,您的客户端能够获得一个 access_token 和一个 renew_token 以与您的后端服务器仅您的服务器进行通信。这是cross-client authorization

      那么,如果您只需要WEB_CLIENT_ID 即可获得access_tokenrenew_token,为什么还需要ANDROID_CLIENT_IDIOS_CLIENT_ID?出于安全原因。

      ANDROID_CLIENT_ID 通过后端设置时通知的 SHA1 链接到 RSA 签名密钥。因此,您的 GAE 应用程序将仅授予 (access_token, renew_token) 已安装的应用程序,该应用程序使用您的应用程序控制台中列出的相同密钥(当然还有您的 clientIds 列表中)

      最终,使用不同签名或未签名的Android应用将不会收到任何access_token,无法建立安全通信通道,甚至无法与您的服务器通信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-16
        • 2013-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 2017-11-23
        • 2017-10-10
        • 2016-04-27
        相关资源
        最近更新 更多