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

调用Google Cloud signJwt时遇INVALID_ARGUMENT错误求助

调用Google Cloud signJwt方法时遇到INVALID_ARGUMENT错误

问题描述

尝试通过工作负载身份联合+域范围委派调用Google Cloud的signJwt方法,严格遵循官方指引但仍收到400错误:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

在Cloud Shell中执行的curl命令:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<SA_USERNAME>%40<PROJECT_NAME>.iam.gserviceaccount.com:signJwt"

request.json内容:

{
        "payload": "{\"iss\":\"<SA_USERNAME>@<PROJECT_NAME>.iam.gserviceaccount.com\",\"scope\":\"https://www.googleapis.com/auth/gmail.readonly\",\"aud\":\"https://oauth2.googleapis.com/token\",\"exp\":1672868057013,\"iat\":1672868053513,\"sub\":\"<USER_NAME_OF_USER_TO_IMPERSONATE>@<DOMAIN>\"}",
        "delegates": [],
}

错误原因及解决方法

  • JWT时间戳格式错误:exp和iat字段使用了毫秒级时间戳,但Google JWT要求为秒级时间戳。你提供的1672868057013是毫秒数,需除以1000取整,改为1672868057和1672868053。
  • JSON语法错误:request.json中delegates字段末尾多了一个逗号,会导致JSON解析失败,需删除该多余逗号。
  • 域范围委派配置验证:确认服务账号已启用域范围委派,且在Google Admin控制台中为该服务账号授权了https://www.googleapis.com/auth/gmail.readonly范围,同时sub字段的用户属于你的G Suite/Workspace域。
  • 服务账号权限检查:确保执行curl命令的身份(通过gcloud auth print-access-token获取令牌的账号)拥有iam.serviceAccounts.signJwt权限,比如被授予Service Account Token Creator角色。

修正后的request.json示例

{
        "payload": "{\"iss\":\"<SA_USERNAME>@<PROJECT_NAME>.iam.gserviceaccount.com\",\"scope\":\"https://www.googleapis.com/auth/gmail.readonly\",\"aud\":\"https://oauth2.googleapis.com/token\",\"exp\":1672868057,\"iat\":1672868053,\"sub\":\"<USER_NAME_OF_USER_TO_IMPERSONATE>@<DOMAIN>\"}",
        "delegates": []
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:43