【问题标题】:how to make google endpoints inaccessible from the web?如何使谷歌端点无法从网络访问?
【发布时间】:2013-09-04 14:12:47
【问题描述】:

我有一个可以通过 Google Endpoints 访问一组 API 的 Android 应用。问题是可以通过https://your-app-id.appspot.com/_ah/api/explorer 从Web 访问相同的API,我不希望这种情况发生。也就是说,我希望只能从移动设备访问(和修改)数据存储。有没有一种简单的方法可以做到这一点?我看了一下 enpoint authentification 并没有完全理解(我对这一切还是新手......),所以我想知道这个(显然)简单的问题是否有更简单的答案。

【问题讨论】:

    标签: android google-app-engine authentication google-cloud-endpoints


    【解决方案1】:

    目前无法改变您的端点在网络上公开可见(等)这一事实。

    但是,您可以实施身份验证以确保它们仅供您的客户(无论是移动设备还是网络)使用。您可以在客户端设备上针对 Google 帐户进行身份验证,也可以只对您的应用进行身份验证。

    这方面的文档在这里: https://developers.google.com/appengine/docs/java/endpoints/consume_android

    这里也有一些:
    https://developers.google.com/eclipse/docs/endpoints-addauth

    不幸的是,两者都不是很好,而且他们更关注用户(与应用)身份验证。因此,如果您遇到问题,我还建议您使用“[google-app-endpoints]authentication”搜索 SO。

    【讨论】:

      【解决方案2】:

      为了将 API 的访问权限限制在您编写的应用程序中,您需要实现经过身份验证的 API 调用。

      https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-android 的 README 中的第二组说明详细说明了如何向 Google Play 服务注册您的应用,以便对您的应用和用户进行身份验证。

      https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-java-maven/blob/master/src/main/java/com/google/devrel/samples/helloendpoints/Greetings.java#L50 显示经过身份验证的 Cloud Endpoints 方法实现。如果在未经过身份验证的方法上发生调用,则 User 对象将为 null。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-19
        • 2017-02-22
        相关资源
        最近更新 更多