无过期Google服务账号密钥每月触发OAuth2无效JWT签名错误排查
问题原因分析
遇到的错误信息:
java.io.IOException: Error getting id token for service account: 400 Bad Request POST https://oauth2.googleapis.com/token {"error":"invalid_grant","error_description":"Invalid JWT Signature."}, iss: <SERVICE_ACCOUNT_NAME_HERE>
针对你遇到的Cloud Run API调用每30天周期性出现上述错误的问题,核心原因如下:
服务账号密钥自动轮换策略:
Google Cloud默认对服务账号密钥启用自动轮换机制,周期约为30天。即便你将密钥设置为“无过期日期”,系统仍会到期自动生成新密钥并失效旧密钥。旧密钥失效后,用其签名的JWT无法通过验证,更换新密钥后仅能维持下一个30天周期,到期后再次触发错误。调用应用未同步密钥更新:
如果调用方应用是硬编码或本地缓存了初始生成的密钥内容,没有对接Google Cloud的密钥管理流程自动获取最新有效密钥,当系统完成密钥轮换后,应用仍使用旧密钥签名JWT,就会触发invalid_grant错误。旧密钥被系统回收失效:
密钥轮换完成后,Google Cloud会将旧密钥标记为无效状态并回收,即便本地保留旧密钥内容,也无法再生成有效的身份令牌,这就是问题周期性出现的直接原因。
内容的提问来源于stack exchange,提问作者Avorthoren
相关产品推荐
相关产品推荐

