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

为何使用$(gcloud auth print-identity-token)返回401,手动输入ID Token却正常?

问题原因及解决办法

核心原因

你直接使用gcloud auth print-identity-token生成的ID Token,受众(aud字段)不满足Cloud Functions的认证要求。

Cloud Functions的HTTP触发在验证ID Token时,要求token的aud字段必须严格匹配函数的完整请求URL(即https://origin-project.cloudfunctions.net/myfunction)。默认不带参数的gcloud auth print-identity-token生成的token,aud字段并非目标函数URL,因此会被认证机制拦截,返回401 Unauthorized。而你手动插入的token应该是之前指定了正确受众生成的,所以能通过验证。

解决办法

生成ID Token时,通过--audiences参数指定函数的完整URL,修改后的curl命令如下:

curl -m 550 -X POST https://origin-project.cloudfunctions.net/myfunction \
-H "Authorization: bearer $(gcloud auth print-identity-token --audiences=https://origin-project.cloudfunctions.net/myfunction)" \
-H "Content-Type: application/json" -d '{}'

验证方式

如果需要确认生成的Token受众是否正确,可以执行以下命令解码查看aud字段:

gcloud auth print-identity-token --audiences=https://origin-project.cloudfunctions.net/myfunction | cut -d '.' -f 2 | base64 --decode | jq '.aud'

输出结果应为目标函数的完整URL,说明受众配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:35:21