将我的"应用"验证为Google Cloud Endpoints而不是"用户"

use*_*970 8 cloud google-app-engine android oauth-2.0 google-cloud-endpoints

我要做的是将我的Android应用程序验证到Google Cloud Endpoint.基本上,端点应该只允许我的Android应用程序访问方法,而不是其他任何东西.

我做过这些事情 -

  1. 在Google Cloud Console中使用Eclipse中的SHA1值创建客户端ID.

  2. 在Google Cloud Console中为我的端点项目创建Web客户端ID.

  3. 在每个端点上提到的"@Api"中添加这两个客户端ID.

  4. 在端点方法中添加额外的"user"参数.

  5. 将后端重新生成并部署到云端.

但是当我运行它时,"用户"总是变为"空".我正在努力寻找一种适当的工作方法来完成这一切.

我搜索了很多论坛但没有找到合适的答案.

这是另一个类似的帖子限制访问谷歌云端点到Android应用程序

这是我正在使用的参考 - https://developers.google.com/appengine/docs/java/endpoints/auth

以前有人在这做过吗?我的主要目标是出于明显的安全原因,不允许未经身份验证的应用程序和外部世界访问端点.我不想使用基于最终用户的身份验证,因为我想让我的应用程序非常简单.

Pre*_*ers 0

听起来它正在按预期工作。您可以控制哪些客户端应用程序可以通过客户端 ID 调用您的端点方法,就像您已经完成的那样。User 参数输入为 null 正是因为您没有进行最终用户身份验证。User 参数代表实际的真实用户(Google 帐户)。因此,如果您不需要最终用户身份验证的方法,则可以简单地不定义 User 参数,或者忽略 null 值。你说你的问题是 User 参数设置为空。您期望在这种情况下会发生什么?

  • 即使我们忘记了用户为 null,我注意到无效的客户端应用程序也被允许访问输入 api 方法。我通过创建一个无效的 android 客户端密钥(基于不属于我的客户端的 sha1)并将其添加到应用程序引擎后端来测试这一点。这意味着我的应用程序的密钥现在不应再有效地访问应用程序引擎。然后我运行了测试,但即使如此,我的应用程序(具有不同的 sha1)仍然能够访问这些方法并执行它们。因此,即使键不匹配,基本上 api 方法访问也是允许的。 (4认同)