我的一个iOS应用使用Google Cloud Endpoints与我的某项服务联系,我希望将该服务的访问权限限制为该应用的实例。
我已按照有关添加authorization的说明进行操作,并创建了一个与我的应用的捆绑ID和应用商店ID相关联的iOS客户端ID。我现在很难理解instructions的这一部分:
如果您的iOS应用正在调用需要的端点 身份验证,您必须向您的iOS客户端添加登录对话框。
我不希望我的用户登录,而是希望我的应用程序将其凭据提供给服务以进行身份验证,而无需用户交互。我认为,因为客户端ID(可能是加密)绑定到客户端ID和捆绑ID,只有应用程序能够(某种程度上)能够这样做,并且客户端ID将有效地像服务帐户一样服务。
Google Cloud Endpoints(适用于iOS客户端)是否支持此类应用(非用户)身份验证方案,还是必须通过在应用级协议中传递一些秘密来推广自己的应用身份验证?以下是Android客户端的some earlier相关(未答复)问题。
答案 0 :(得分: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
中进行检查。