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

使用GOOGLE_APPLICATION_CREDENTIALS访问Google云服务时遭遇Invalid JWT错误

解决GCP JWT令牌"Invalid JWT: Token must be a short-lived token"错误

刚生成的JSON密钥就触发这个错误确实挺让人头疼的,结合你的使用场景,我整理了几个最靠谱的排查方向:

1. 优先检查本地系统时间是否准确

这是这类问题最常见的诱因——GCP对JWT令牌的时间校验非常严格,如果你的本地系统时间和GCP服务器时间偏差超过几分钟,哪怕刚生成的令牌也会被判定为"不在合理时间范围内"。

解决方法:

  • Windows:打开「日期和时间设置」,勾选「自动设置时间」和「自动设置时区」
  • Mac:打开「系统设置」→「通用」→「日期与时间」,勾选「自动设置日期与时间」
  • Linux:执行命令同步时间:
    sudo timedatectl set-ntp true
    # 部分发行版可使用ntpdate(需先安装)
    sudo ntpdate pool.ntp.org
    

2. 重新生成并下载JSON密钥文件

虽然你刚生成密钥,但不排除生成过程中GCP端的临时异常,或者下载时文件损坏的情况。建议:

  • 登录Google Cloud Console,进入「IAM与管理员」→「服务账号」
  • 找到对应的服务账号,重新生成一个新的密钥,下载后替换本地的旧文件
  • 注意不要手动修改JSON文件里的任何内容,尤其是和权限、时间相关的字段

3. 清除客户端库的令牌缓存

部分Google Cloud客户端库会缓存已生成的JWT令牌,哪怕你换了新密钥,可能还在使用旧的缓存令牌。可以:

  • 完全重启你的应用程序,强制客户端用新密钥重新生成令牌
  • 如果是特定语言的库(比如Python的google-cloud-firestore),可以手动清除缓存目录(通常在~/.cache/google-cloud路径下)

4. 确认代码中密钥文件的加载路径

检查你的代码是否真的加载了刚生成的新JSON文件,有时候可能因为路径写错,还是在使用旧的密钥文件。可以在代码中添加打印语句确认路径:

# 以Python为例,其他语言逻辑类似
import os
key_path = "path/to/your/new-key.json"
print(f"当前加载的密钥文件路径:{os.path.abspath(key_path)}")

错误原因补充

这个错误本质是GCP服务器验证JWT令牌时,发现令牌的签发时间(iat)或过期时间(exp)不符合要求——正常情况下,客户端用服务账号密钥生成的令牌有效期是60分钟,但如果本地时间错误,生成的令牌的iat会和GCP服务器时间偏差过大,导致被直接拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:37:29