【问题标题】:How make external company use cloud function API如何让外部公司使用云功能API
【发布时间】:2021-07-26 10:56:42
【问题描述】:

我有对所有用户开放的云功能。我想授权使用这些功能。

我的情况是我希望其他公司访问我的 API,而不是我未添加的任何其他用户。

谷歌的文档对我的具体案例没有帮助。

创建服务帐户以供公司调用 API 端点的正确方法是否正确?

或者我应该创建一个 JWT 令牌并以某种方式对其进行验证? link

或者我需要创建一个云端点网关吗?

OAuth 2 不适合,因为我无法显示同意屏幕,因为它不是单个用户。

我有点迷路了,谢谢你的帮助! :)

我已经尝试了很多东西,但到目前为止都没有奏效,包括上面的那些。我只是想在这个案例的正确方向上得到帮助!

【问题讨论】:

  • 用户是否有 Google 帐户(workspace、gmail 或类似的帐户)?
  • 目前,我只是想让它与我链接到我的个人 Gmail 的服务帐户一起使用。看看它是否适用于外部用户。
  • 明白。但是,这个问题是您将使用的解决方案的基石。如果它是 Google 帐户,您可以为此使用 IAM 服务和工作区组。否则,需要使用上层解决方案(如代理、API网关、...)
  • 对于未来,如果您不管理用户的身份,最好押注通用解决方案并使用 Google Cloud 上的 API 网关,或者如果您有预算,则使用 APIGee。您可以使用 Firebase 身份验证或 API 密钥。有一堆关于那的文章。如果您需要一些指示,请告诉我
  • 这个也有firebase auth:medium.com/@chamaln/…

标签: google-cloud-functions


【解决方案1】:

您有 2 个解决方案来验证用户身份:

  • 您可以使用 IAM 服务来过滤哪些人可以访问您的服务。权衡是需要有一个 Google 帐户(gmail、workspace 等)并且它不适合外部用户用例(因为您无法预测哪个将是他们的身份提供者)
  • 或者在您的服务前面使用代理层,例如 API Gateway 或 APIGee(如果您有预算的话)。

使用 API 网关,您可以设置安全定义以接受 firebase 用户(伟大的文章 here)或 API 密钥(尤其是机器对机器通信。我 wrote an article 使用 ESPv2,但它的概念与API 网关)

【讨论】:

    【解决方案2】:

    您是否尝试在您的 gcp 项目中邀请这些公司的一些电子邮件地址 - 将他们的 IAM 策略角色设置为“Cloud Functions Invoker”?

    此外,您的 Cloud Functions 用户界面中还有一个“权限”选项卡

    不知道它是否适合您的情况,但也许您会在此基础上更进一步:)

    【讨论】:

    • 目前,我使用的是 yyy@yyy.iam.gserviceaccount.com。它具有“Cloud Functions Invoker”角色。而且我已将服务帐户添加到云功能中,因此它只能由所有者和该服务帐户调用。但是我似乎没有让服务帐户令牌能够附加到“Bearer”。有什么建议吗?
    • 也许邀请其他公司参与项目并不是一个好主意。相反,您可以通过 cors 为他们提供访问权限。所以它会更加简单和可靠
    • 即使它是一个服务帐户,除了调用之外什么都不能访问?将检查 CORS!
    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多