我正在尝试使用谷歌服务帐户在 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 中自动化邮递员收集。如何验证服务帐户并发送请求?的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 openSUSE Leap 15 下的 GitAhead 中添加远程 GitLab 帐户时 SSL 握手失败