使用cURL使用JSON密钥文件进行Google云身份验证
我有一个谷歌云的JSON密钥文件,格式如下:使用cURL使用JSON密钥文件进行Google云身份验证,curl,oauth,google-cloud-platform,google-oauth,gcloud,Curl,Oauth,Google Cloud Platform,Google Oauth,Gcloud,我有一个谷歌云的JSON密钥文件,格式如下: { "type": "service_account", "project_id": "###", "private_key_id": "###", "private_key": "-----BEGIN PRIVATE KEY-----\n ######################################## \n-----END PRIVATE KEY-----\n", "client_email": "##
{
"type": "service_account",
"project_id": "###",
"private_key_id": "###",
"private_key": "-----BEGIN PRIVATE KEY-----\n
########################################
\n-----END PRIVATE KEY-----\n",
"client_email": "###@###.gserviceaccount.com",
"client_id": "###",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/###.gserviceaccount.com"
}
我希望在使用常规curl命令而不是安装或时获得一个access\u令牌
我希望有这样的情况:
curl\
--请帖\
--数据二进制文件“@path/to/key.json”\
https://accounts.google.com/o/oauth2/token
curl是不够的
我不认为你仅仅用curl
就能做到这一点,因为我认为它需要JWT身份验证——读取文档中的行和我自己收到的错误消息
oauth2l:一种轻量级的方法
他们有,它可以从service\u account.json
JWK生成JWT(尽管它也应该与使用PEM或CRT的JWT一起使用)
不幸的是,他们没有直接的下载链接,但也不难获得:
试试这个:
安装Go:
- 看(简单的)或(好的读物)
然后安装oauth2l
:
go get github.com/google/oauth2l
go install github.com/google/oauth2l
然后生成JWT API令牌:
oauth2l fetch --jwt --json ./service_account.json https://www.googleapis.com/auth/cloud-platform
卷曲
然后使用curl
获取所需的API:
token=$(oauth2l fetch --jwt --json ./service_account.json https://www.googleapis.com/auth/cloud-platform)
curl -X POST https://www.googleapis.com/dns/v1/projects/<project>/managedZones \
-H "Authorization: Bearer $token"
token=$(oauth2l fetch--jwt--json./service_account.jsonhttps://www.googleapis.com/auth/cloud-platform)
curl-X柱https://www.googleapis.com/dns/v1/projects//managedZones \
-H“授权:持票人$token”
这并不理想,但我认为这将以最少的抽象得到您所需要的
更不抽象
当我弄明白这件事后,我会试着发回。它需要某种工具,但我认为它比oauth2l更轻。请看这里:我也在尝试这样做,因为我在我的CI Docker映像中使用gsutil,安装所有东西(包括Python)需要大约100MB的内存如果我能从一个简单的bash脚本与GCS交互,而不是安装所有这些重依赖项,那就太好了。