我已阅读这些文件:
https://cloud.google.com/docs/authentication/getting-started?hl=ru#auth-cloud-implicit-java
https://cloud.google.com/storage/docs/reference/libraries?hl=ru
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#callinganapi
我已存储服务帐户的 google-secrets.json 凭据。 但是我不明白如何发送带有凭据的请求来获取身份验证令牌或 api 密钥。
只有已发布的库可以执行此操作。
如何在 Postman 中设置 HTTPS 身份验证?
Gordon Thompson 在媒体文章 Google Authentication with Postman 中很好地回答了这个问题,涵盖了三种不同的方法:
找到了。
使用 JWT.io 上的 RS256 参数对其进行签名
标题:
{
"alg": "RS256",
"typ": "JWT",
"kid": "your_private_key_id"
}
有效负载:
{
"iss": "your_client_email_of_service_account",
"sub": "your_client_email_of_service_account",
"aud": "https://www.googleapis.com/oauth2/v4/token",
"scope": "https://www.googleapis.com/auth/devstorage.read_only",
"iat": current_unix_time,
"exp": current_unix_time+3600
}
验证签名
最后一个字段中的your_private_key(不带 )
获得编码密钥
然后
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=ENCODED_KEY_FROM_JWT.IO
我得到了回应
{
"access_token": "ya21.c.ElrSBodwuWANeh7Q0-zlXpOxqm9-uEszPElsY2tvoG5aPxRgOkasN5G2sMgj3iosPVbRYk1wXw_DcBnm2FtuNBlZpv_wCC0YS5pWMykR8Ouf5CZg-8OK842rvfk",
"expires_in": 3600,
"token_type": "Bearer"
}
也不要忘记授予您的服务帐户读取存储的权限
在邮递员应用程序中
client_email
、private_key
、token_uri
SCOPES
变量中添加或删除范围{{accessToken}}
写为Token