【问题标题】:Cloud IAP and three-legged OAuthCloud IAP 和三足 OAuth
【发布时间】:2026-02-08 14:30:01
【问题描述】:

假设如下场景:

User <> Cloud IAP <> App Engine App <> Google APIs

App Engine App 如何代表经过身份验证的用户访问 Google APIs? (即,不使用 App Engine 应用服务帐户)

Cloud IAP 将 JWT 令牌传输到 App Engine App,但我无法使用它访问 Google APIs 资源(例如用户配置文件)。

我找不到该场景的任何相关文档。

【问题讨论】:

    标签: oauth google-cloud-platform


    【解决方案1】:

    应用不会自动代表其用户调用 API,即使它在 Cloud IAP 之后也是如此。 Cloud IAP 的存在是为了控制对应用的访问,而不是授予应用权限。

    要允许应用代表用户行事,应用必须执行 the OAuth2.0 web server flow。通常,您将使用 google 提供的 oauth2 库来执行该流程(pythonjavaetc),然后将该凭据传递到您用于进行实际 API 调用的客户端库中。

    【讨论】:

    • 这是否意味着至少会有两个 OAuth 用户请求:1 - 让 IAP 授予对应用程序的控制访问权限 2 - 然后另一个用户请求应用程序级别的权限(例如访问 Bigquery,存储等)
    • 正确。您提到的 IAP JWT 是由 IAP 签名的断言,即请求来自给定用户。它不是您可以用来提出请求的凭据。