int*_*cho 6

Gordon Thompson 在媒体文章Google Authentication with Postman中很好地回答了这个问题,涵盖了三种不同的方法:

  • 使用 oauth2l CLI
  • 使用 OAuth 2 和用户凭据配置 Postman
  • 配置 Postman 以使用预请求脚本。这将从服务帐户密钥自动生成 Google Access 和 ID 令牌并将其保存在 Postman 中。基于 Denis Loginov 的工作,要点如下


Ale*_*uev 1

成立。

使用 JWT.io 上的 RS256 参数对其进行签名

标题:

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "your_private_key_id"
}
Run Code Online (Sandbox Code Playgroud)

有效负载:

{
  "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
}
Run Code Online (Sandbox Code Playgroud)

验证签名

最后一个字段中的 your_private_key (不带 \n)

得到编码密钥

进而

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
Run Code Online (Sandbox Code Playgroud)

我得到了回复

{

    "access_token": "ya21.c.ElrSBodwuWANeh7Q0-zlXpOxqm9-uEszPElsY2tvoG5aPxRgOkasN5G2sMgj3iosPVbRYk1wXw_DcBnm2FtuNBlZpv_wCC0YS5pWMykR8Ouf5CZg-8OK842rvfk",

    "expires_in": 3600,

    "token_type": "Bearer"

}
Run Code Online (Sandbox Code Playgroud)

另外不要忘记授予您的服务帐户读取存储的权限