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

Can GCP service account keys be used as a direct substitute for Cloud Endpoints api keys?

我确实看到了上述问题,但我想针对我的用例验证其功能。我有一个 REST api 部署到 Google App Engine,我想为外部用户引入一些 api 密钥机制。我不是在创建一个网站,我只是想确保只有我的代码从前端到后端与我的代码通信,这是 public api 任何拥有有效凭据的人可以访问。

Google Cloud Endpoints will only authenticate api keys generated through GCP, so my thinking goes that if it's possible to create a service account and associated ServiceAccountKey via http request, then it could be plausible to generate api keys (service account keys) for any prospective user by generating a service account per user and then giving them the relevant private key that will allow them to authenticate through Cloud Endpoints (jwt signing?).

这对我来说听起来是个好计划,但很可能我遗漏了一些让这个想法变得糟糕的东西。想法?这已经完成了吗before/proven?

TL;DR: 错误的方式

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

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

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

最后,API 密钥生成最近(大约 1 个月)得到了发展......我想再次找到文档,但它是 dead link。也许 Beta 还没有准备好。

注:也许我的回答对你有帮助?