使用 Firebase Auth id 令牌验证(多个)云 运行 服务

Using Firebase Auth id tokens to authenticate (multiple) Cloud Run services

Security Cloud Run services for end-users and other services相关

我正在使用:

我挣扎的地方....

我的应用程序提供 1 项或多项云 运行 服务,应用程序的用户应该能够使用这些服务。但是验证 Cloud 运行 服务需要每个服务的 ID 令牌; id 令牌的受众必须使用 Cloud 运行 服务 URL 并且 Cloud 运行 服务 URL 是特定于服务的。

似乎我应该能够将 Firebase Auth id 令牌交换为(Google 帐户)id 令牌(具有适当的受众),然后可以用来调用云 运行 服务。代理也可以 运行 在 Cloud 运行 上,它会使用我的应用程序的身份验证服务来验证是否应该向 id 令牌用户颁发 Google id 令牌。

Guillaume Blaquire 的 answer 提出了 Coud Endpoints 或类似于我上面描述的代理。但是,Cloud Endpoints 要求在部署时知道后端服务(这些 Cloud 运行 服务不会),我想为用户提供 id 令牌,以便他们可以使用 curl或其他一些工具来发出授权请求。

Cloud 运行 有一些令人信服的 Authenticate 文档(原文如此。)但我想要的东西介于:

与其将你的云 运行 放在云端点后面,你必须提前知道云 运行 实例,你可以在云中处理请求和身份验证 运行实例本身。

为了能够在 Cloud 运行 实例中处理 Firebase 身份验证令牌,必须对其进行设置,以便可以在未经身份验证的情况下调用它们。然后,在 Cloud 运行 内部,它应该启动一个 Web 服务器,解析传入的请求(注意 Authorization header - Firebase Auth sample),然后执行操作或终止请求。

要实现这一点,请查看该线程代码所基于的 this thread for details on how you can handle both HTTP and service-service requests. Alternatively, you could just deploy the Functions Framework 图片。

如果您想要更简洁的 URL,请在单个 Cloud 运行 实例中托管多个端点,然后将该实例置于 Cloud Endpoints 之后,或者您可以使用类似 Firebase Hosting.