【问题标题】:Can GCP service account keys be used as a direct substitute for Cloud Endpoints api keys?GCP 服务帐号密钥可以直接替代 Cloud Endpoints api 密钥吗?
【发布时间】:2020-06-11 02:46:38
【问题描述】:

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 Endpoints (jwt signing?)。

对我来说,这听起来像是一个不错的计划,但很可能我错过了一些让这个想法变得糟糕的东西。想法?之前是否已经完成/证明了这一点?

【问题讨论】:

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


    【解决方案1】:

    TL;DR:错误的方式

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

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

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

    最后,API 密钥生成发生在最近(大约 1 个月)并且....我想再次找到该文档,但它是 dead link。也许测试版还没有准备好。

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

    【讨论】:

    • 不幸的是,您链接的答案无济于事,因为这仅适用于内部应用程序之间的通信,您可以通过 UI 手动生成 api 密钥并将它们插入到您尝试通信的应用程序中
    • 我试图避免的正是手动 api 密钥生成 - 它必须通过某种 sdk 或公共 api impl 工作的东西自动化
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2021-11-24
    相关资源
    最近更新 更多