Google cloud platform 外部客户端在Google云端点中的授权

Google cloud platform 外部客户端在Google云端点中的授权,google-cloud-platform,google-cloud-endpoints,Google Cloud Platform,Google Cloud Endpoints,我们正在开发一个API,该API旨在供我们的外部客户使用,这些客户不在谷歌云内。 谷歌云端点似乎是一个很好的例子 我们需要: 客户能够在我们的“开发人员门户”中注册,以获得必要的凭据 跟踪我们的客户(查看特定客户的请求数量,撤销其对API的访问权等) 我不太清楚的是,如果我们的客户不在谷歌云中,如何对他们进行身份验证和识别 我们已经在一个部分或我们的应用程序中通过用户电子邮件使用Firebase身份验证。继续使用这种身份验证会很方便,但我不太明白如何使用。 谷歌表示,客户端应用程序必须发送JWT

我们正在开发一个API,该API旨在供我们的外部客户使用,这些客户不在谷歌云内。
谷歌云端点似乎是一个很好的例子

我们需要:

  • 客户能够在我们的“开发人员门户”中注册,以获得必要的凭据
  • 跟踪我们的客户(查看特定客户的请求数量,撤销其对API的访问权等)
  • 我不太清楚的是,如果我们的客户不在谷歌云中,如何对他们进行身份验证和识别

    我们已经在一个部分或我们的应用程序中通过用户电子邮件使用Firebase身份验证。继续使用这种身份验证会很方便,但我不太明白如何使用。 谷歌表示,客户端应用程序必须发送JWT令牌。但是它必须使用什么私钥来签署JWT

    我们正在考虑的验证客户端的第二个选项是用于验证用户。但我有同样的问题:客户端应用程序必须使用什么私钥来签署JWT

    客户端是否打算生成自己的密钥对


    如果我们的用例有更好的选择,或者我遗漏了什么,请随时为我指出正确的方向。

    你走的路是正确的

    • 使用firebase,JS库允许您向正确的身份提供程序进行身份验证,并且该库还允许您生成JWT。这里不需要私钥
    • 使用自定义方法,情况就不同了。云端点需要验证JWT的签名。为此,云端点需要知道用于签署JWT的私钥的公钥。大多数情况下,它是由您自己的IdP系统提供的
    在您的环境中,Firebase auth(或者,如果您想在Google云上管理您的用户)是最适合您的解决方案。对于多个客户,您无法注册他们的所有公钥,唯一的解决方案是让您自己的IdP和所有客户在其上注册


    我还有一个问题:您计划如何计算每个客户的请求数?通过云端点还是您自己的数据库?

    我们提出了一种使用方法对用户进行身份验证的解决方案:

  • 我们使用firebase通过电子邮件实现了用户身份验证(如我在问题中所述)
  • 为用户添加了将其公共证书上载到我们的“门户”的方法。
    2.1. 这是使用谷歌云功能完成的。基本上,我们创建了两个端点:
    2.1.1. 使用firebase令牌上载公共证书。
    2.1.2. 通过某个url以JWKS格式显示所有公共证书(这样google就能够验证用户的JWT签名)
  • 为用户发布了关于如何形成JWT以使用我们的API的说明(此时,每个用户都必须拥有与先前上载的公钥相关联的私钥)
  • 现在,我们API的用户可以使用提供的JWT令牌进行API调用
  • 我们的技术堆栈如下所示:

  • 云函数(用于证书处理)
  • Firestore(用于身份验证、存储证书等)
  • 具有
  • 谷歌应用引擎标准环境

  • 谢谢你的回答!我要试一试。计算云端点中的请求数对我来说很好。也许通过开放API规范设置一些请求限制对我来说就足够了。我的问题更多的是一个警告而不是一个问题!没有API_键,您无法实现配额和速率限制。为了区分客户机,您需要在不同的项目中有1个API密钥(每个客户机1个)。您不能通过脚本和API调用自动完成,这只是一个手动操作(没有API来生成API密钥!)。现在还不太适合开发人员(因为这个领域即将推出新产品;)@guillaumeblaquiere你在说什么?端点是否即将退役?ESPv2怎么样?我不知道终点。API网关使用ESPv2。这是开源版本。API网关是托管版本。我认为API网关和云端点将合并,因为特性相同,两者之间的限制不明确!