You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OAuth/OAuth2.0实现第三方系统访问Google Cloud Run REST API

解决方案:用OAuth 2.0客户端凭证流访问Cloud Run服务

针对你的场景,最适合的是OAuth 2.0客户端凭证流(Client Credentials Flow)——这是服务间认证的通用标准方案,不需要客户端集成Google Cloud SDK或处理服务账号密钥文件,只需通过标准HTTP请求获取令牌即可访问你的Cloud Run API。

具体步骤

1. 创建OAuth 2.0客户端ID

  • 登录Google Cloud控制台,进入「API和服务」→「凭据」页面
  • 点击「创建凭据」→「OAuth客户端ID」
  • 选择应用类型:如果是后端服务,选「其他」或「Web应用」(根据客户端实际场景)
  • 完成创建后,记录下客户端ID和客户端密钥

2. 为客户端ID分配Cloud Run Invoker权限

  • 打开你的Cloud Run服务详情页,切换到「权限」标签
  • 点击「添加权限」,在「新成员」输入框中填写:client:<你的客户端ID>(格式示例:client:1234567890-abcdefghijklmnop.apps.googleusercontent.com)
  • 在「角色」中搜索并选择「Cloud Run Invoker」(roles/run.invoker),保存配置

3. 获取访问Cloud Run的ID令牌

客户端需要向Google的令牌端点发送POST请求,获取身份令牌:

POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=你的客户端ID
&client_secret=你的客户端密钥
&audience=你的Cloud Run服务完整URL(比如https://my-api-xyz.a.run.app)

响应示例(提取id_token字段):

{
  "access_token": "...",
  "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6...",
  "token_type": "Bearer",
  "expires_in": 3600
}

4. 使用令牌访问Cloud Run API

在请求Cloud Run服务时,将id_token放入Authorization头:

GET https://你的Cloud Run服务URL/api/xxx
Authorization: Bearer 刚才获取的id_token

关键说明

  • 为什么API Key没用?Cloud Run的「要求身份认证」模式不支持API Key,API Key仅适用于公开访问的服务或搭配Cloud Endpoints使用,所以你之前的尝试会返回403是正常的。
  • 令牌有效期:默认1小时,客户端可以缓存令牌,到期后重新请求即可。
  • 这个方案的优势:完全遵循OAuth2标准,客户端无需任何Google Cloud特定代码,只需实现标准的HTTP请求逻辑,改动极小。

内容的提问来源于stack exchange,提问作者Vasil Yordanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:30