是否可以在不使用gcloud
的情况下获取Google Cloud服务帐户的授权持有人令牌?
也就是说,我想提出一个HTTP请求(可能是我的JSON密钥文件以某种方式签名),这将为我提供相当于
gcloud auth application-default print-access-token
此请求将在我自己的服务器上进行,我可能不希望安装gcloud
,并且我无法访问可能提供此内容的任何内部服务器元数据(例如,计算引擎的情况)。
是否有一些oauth端点提供这样的东西?
或者,有没有办法用gcloud
生成长寿命令牌?
我是Google Cloud生态系统的新手,请原谅我的无知和术语......
我认为这正是您所寻找的:
https://developers.google.com/identity/protocols/OAuth2#serviceaccount
老实说,我不认为你想要达到的目标是正确的,正在运行
gcloud auth application-default print-access-token
你得到一个不打算做你想要的代币:
“当您开发通常使用服务帐户但需要在本地开发环境中运行代码的代码时,此命令非常有用,因为这样可以更容易地提供用户凭据。”
这将引导您更多地实施此解决方案:https://developers.google.com/identity/protocols/OAuth2ServiceAccount
对于你的第二个问题,“有没有办法用gcloud生成长寿命令牌?”,没有。但是,您可以使用刷新令牌生成新的访问令牌。检查此问题的第一个答案:
OAuth2 and Google API: Access token expiration time?
此外,这是一个python库的示例,您可以将其用作身份验证机制:
不需要图书馆或api。你可以使用它获得它
curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" | jq -r .access_token
如果您需要在shell脚本中使用它,这将非常有用。