【问题标题】:Authenticating to Google Cloud Endpoints as iOS app (not user with Google account credentials)作为 iOS 应用程序向 Google Cloud Endpoints 进行身份验证(不是具有 Google 帐户凭据的用户)
【发布时间】:2014-06-24 06:05:24
【问题描述】:

我的一个 iOS 应用使用 Google Cloud Endpoints 与我的一项服务联系,我想限制对该服务的访问仅限于该应用的实例。

我已按照有关添加 authorization 的说明创建了一个与我的应用程序包 ID 和应用商店 ID 相关联的 iOS 客户端 ID。我现在很难理解instructions 的这一部分:

如果您的 iOS 应用正在调用需要 身份验证,您必须向您的 iOS 客户端添加一个登录对话框。

我不希望我的用户登录,而是希望我的应用程序将其凭据提供给服务以进行身份​​验证,而无需用户交互。我认为由于客户端 ID(可能以加密方式)与客户端 ID 和捆绑 ID 相关联,因此只有应用程序(以某种方式)能够这样做,并且客户端 ID 可以像服务帐户一样有效地服务。

Google Cloud Endpoints(适用于 iOS 客户端)是否支持这种类型的应用(非用户)身份验证方案,还是我必须通过在应用级协议中传递一些秘密来推出自己的应用身份验证?以下是针对 Android 客户端的someearlier 相关(未回答)问题。

【问题讨论】:

标签: oauth-2.0 google-cloud-endpoints service-accounts


【解决方案1】:

我现在已经得出结论,Google Cloud Endpoints仅允许基于 Google 帐户凭据的身份验证。我需要的是整个应用程序(而不是其用户)的凭证,类似于服务帐户或 API 密钥。

我使用服务帐户进行服务器到服务器的通信。似乎无法为应用创建服务帐户(与 GAE 应用相反)。

GTLService 有一个属性APIKey。但是,如果我的客户端将其设置为我在 Google Developer Console 中为我的 GAE 应用程序创建的公共访问密钥(iOS 密钥),则服务器会返回错误 Access Not Configured. Please use Google Developers Console to activate the API for your project,但没有(明显)配置非 Google API 的方法,例如我的服务 API。

因此,除非另行通知,否则我将在我的应用程序级 API 请求中添加一个 API 密钥,并在每个 @ApiMethod 中检查它。

【讨论】:

  • 我也遇到了和你一样的错误(访问未配置。请使用 Google Developers Console 为您的项目激活 API)。你是怎么做的 ?你有没有在你的 IOS 代码中放一个自己的 API Key ?
  • @Phil 是的,此时我正在传递一个 API 密钥作为我的应用程序级协议的一部分。
  • @Phil 不确定您所说的清除是什么意思。连接通过 HTTPS。 FWIK Google 的 API 密钥将在 HTTP 标头中传达,即也以“clear”形式传达。
猜你喜欢
  • 2014-10-11
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多