GCP服务帐户密钥可以直接替代Cloud Endpoints api密钥吗?

时间:2020-06-10 15:58:41

标签: google-cloud-platform jwt google-cloud-endpoints service-accounts

Is it possible to create google API KEY programmatically?

我确实看到了上述问题,但我想针对我的用例验证其功能。我有一个REST api部署到Google App Engine,我想为外部用户介绍一些api密钥机制。我不是要在一个网站上尝试确保它只是我的代码从前端到后端与我的代码对话,而是一个具有有效凭据的任何人都可以访问的公共api。

Google Cloud Endpoints will only authenticate api keys generated through GCP,所以我的想法是,如果可以通过http请求create a service account并将其与ServiceAccountKey关联,那么可能会为任何情况生成api密钥(服务帐户密钥)准用户,方法是为每个用户生成一个服务帐户,然后为他们提供相关的私钥,使他们可以authenticate through Cloud Endpointsjwt signing?)。

对我来说,这听起来像是个好计划,但很可能我错过了使这成为一个糟糕主意的东西。有什么想法吗?已经/经过验证了吗?

1 个答案:

答案 0 :(得分:0)

TL; DR:错误的方式

首先,GCP上的API密钥只能验证GCP项目,而不能验证用户或服务帐户。

然后,服务帐户密钥文件不是API密钥。这是一个秘密身份,可用于根据Oauth2流生成OAuth2 JWT令牌(身份令牌)。可以提供此身份令牌进行身份验证(并且仅1H有效)

此外,每个项目最多只能有100个服务帐户,服务帐户的含义是对应用而非用户进行身份验证。如果您想验证用户身份,建议您查看Cloud Identity Platform

最后,API密钥生成已经发展到最近(大约1个月),而且....我想再次找到该文档,但这是dead link。试用版可能尚未准备好。

注意:也许我执行here (just now)的答案可以为您提供帮助?