我正在尝试使用谷歌服务帐户在 GitLab 中自动化邮递员收集。如何验证服务帐户并发送请求?

Posted

技术标签:

【中文标题】我正在尝试使用谷歌服务帐户在 GitLab 中自动化邮递员收集。如何验证服务帐户并发送请求?【英文标题】:I am trying to automate a postman collection, in GitLab, using a google service account. How do I authenticate the service account and send a request? 【发布时间】:2020-07-18 21:42:51 【问题描述】:

背景: 我有一个可以使用 Postman 发布到的 Google 发布/订阅主题。我想将此邮递员集合放入 GitLab 并使用 gcloud 服务帐户来运行集合,而无需任何人工干预(例如,必须生成不记名令牌并复制到邮递员集合中)。

问题: 我的开发人员为有权向我的主题发布消息的服务帐户创建并提供了一个 .JSON 密钥文件(如下截图)。

我遇到了一个障碍,我不知道如何将不记名令牌从 bash 传递到我的收藏中。这是我在 GitLab 中的 .yaml 文件到目前为止的样子:

stages:
    - test

postman_tests:
    stage: test
    image: 
        name: postman/newman_alpine33
        entrypoint: [""]
    script:
        - newman --version
        - npm config set unsafe-perm true
        - GOOGLE_APPLICATION_CREDENTIALS=~/path-to-my-serviceaccount-key.json gcloud auth application-default print-access-token
        - newman run name-of-my-collection.json -e name-of-my-postman-environment.json

GOOGLE_APPLICATION_CREDENTIALS=~/path-to-my-serviceaccount-key.json gcloud auth application-default print-access-token 打印出一个令牌,但我不知道如何将它传递给集合。我这样做对吗?

【问题讨论】:

我不熟悉 postman|newman 但GOOGLE_APPLICATION_CREDENTIALS 是一个环境变量(据我所知)仅由 Google SDK 使用,它不会是 Postman 所期望的。您生成的不记名令牌必须以某种方式通过标头提供给 Postman API 调用... curl 等价物是 curl .... --header "Authorization: Bearer $TOKEN" ,您需要类似的东西 顺便说一句,因为您将 (!?) gcloud 安装到容器中,您可能希望考虑使用 oauth2l。这是一个 Google 实用程序,您可以使用它更直接地从服务帐户凭据中获取 header 【参考方案1】:

我认为你可以使用以下代码:

gcloud auth activate-service-account --key-file=KEY_FILE

之后,您可以使用以下方式打印您的身份令牌:

gcloud auth print-identity-token 

之后将其作为身份验证标头传递:

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" <your usual curl params>

希望这会有所帮助。

    gcloud auth activate-service-account

【讨论】:

以上是关于我正在尝试使用谷歌服务帐户在 GitLab 中自动化邮递员收集。如何验证服务帐户并发送请求?的主要内容,如果未能解决你的问题,请参考以下文章

无法提取访问令牌谷歌服务帐户

asp.net从谷歌应用程序帐户发送邮件不起作用

使用 php 和服务帐户创建谷歌日历事件 - 身份验证问题

尝试在 openSUSE Leap 15 下的 GitAhead 中添加远程 GitLab 帐户时 SSL 握手失败

与会者在使用服务帐户、谷歌日历 API 创建活动时未收到会议邀请

每当我尝试通过 git 推送到远程仓库时都会发生错误。我已经尝试过使用我的 github 和 gitlab 帐户