如何解决gcloud iam service-accounts keys create 给出了无效的 jwt 签名错误
我使用下面的 gcloud iam 命令创建的密钥与通过控制台创建 json 密钥之间有什么区别吗?每个结果都会生成一个 .json 文件,除了 private_key_id 和 private_key 值的明显差异之外,该文件是相同的。以下是我正在使用的 gcloud 命令:
gcloud iam service-accounts create my-sa-name
gcloud projects add-iam-policy-binding my-project-id --member="serviceAccount:my-sa-name@my-project-id.iam.gserviceaccount.com" --role="roles/owner"
gcloud iam service-accounts keys create key.json --iam-account=serviceAccount:my-sa-name@my-project-id.iam.gserviceaccount.com
但是,当我尝试利用通过命令行下拉的那个时,我得到:
google.auth.exceptions.RefreshError: ('invalid_grant: Invalid JWT Signature.','{"error":"invalid_grant","error_description":"Invalid JWT Signature."}')
奇怪的是,如果我转到控制台,为同一个服务帐户创建一个密钥,并将下载到我的计算机的文件放在 CLI 中的文件的位置,一切正常。
我如何使用你问的钥匙?我使用函数框架在本地运行和调试将访问云存储桶的云函数,因此我的代码使用 google.cloud.storage 客户端库(python 3.8)。我运行本地进程,环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为 json 密钥文件的位置/文件名。我知道这一切都很好 b/c 控制台下载的密钥工作正常。
我也尝试过使用 gcloud auth service-account --key-file=key.json 这也给了我无效的 JWT 签名错误。
幸运的是,我没有被 b/c 阻止,我可以使用手动创建的密钥,但我真的很想在这里自动化每个可能的步骤......
所以……有人能解释一下吗?看到它,弄清楚它并知道如何解决它?
解决方法
gcloud iam service-accounts keys create key.json \
--iam-account=my-sa-name@my-project-id.iam.gserviceaccount.com
澄清这一点的一种方法是:
ACCOUNT="[[YOUR-ACCOUNT]]"
PROJECT="[[YOUR-PROJECT]]"
EMAIL="${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com"
gcloud iam service-accounts create ${ACCOUNT} \
--project=${PROJECT}
gcloud projects add-iam-policy-binding ${PROJECT} \
--member="serviceAccount:${EMAIL}" \
--role="roles/owner"
gcloud iam service-accounts keys create ${ACCOUNT}.json \
--iam-account=${EMAIL} \
--project=${PROJECT}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。