如何使用 Postman 和 HTTPS 通过 Google 服务帐户凭据进行身份验证?

问题描述 投票:0回答:3

我已阅读这些文件:

我已存储服务帐户的 google-secrets.json 凭据。 但是我不明白如何发送带有凭据的请求来获取身份验证令牌或 api 密钥。

只有已发布的库可以执行此操作。

如何在 Postman 中设置 HTTPS 身份验证?

google-api postman google-oauth google-authentication service-accounts
3个回答
5
投票

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

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

1
投票

找到了。

使用 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"

}

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


0
投票

在邮递员应用程序中

  1. 转到Environments模块并创建一个新环境。我们称之为 gcp_sa_env
  2. 创建一个名为 serviceAccountKey 的新变量,并将 google-secrets.json 的内容复制粘贴到其值中。 JSON 应包含
    client_email
    private_key
    token_uri
  3. 等项目
  4. 转到Collections模块并创建一个新请求
  5. 在右上角选择创建的环境(gcp_sa_env
  6. 预请求脚本中复制粘贴此 Javascript 代码 (gist),从而能够从服务帐户密钥自动生成 Google OAuth 令牌
  7. 根据需要在
    SCOPES
    变量中添加或删除范围
  8. Authorization模块中,选择Bearer Token作为授权类型,并将
    {{accessToken}}
    写为Token
  9. 配置请求的其余部分(方法、url、正文等)并运行它
© www.soinside.com 2019 - 2024. All rights reserved.