使用“gcloud auth”创建访问令牌时可以设置范围吗

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

我在示例 Java 代码中看到,当请求刷新令牌时,可以添加范围:

credential.createScoped(Arrays.asList("someapi")).refreshToken

我在 Python 中也看到了同样的情况。但 cli 中没有范围的配置选项。

gcloud auth application-default print-access-token

没有

gcloud auth --scopes="someapi" application-default print-access-token

您知道如何在 cli 中为自定义范围设置访问密钥吗?

google-cloud-platform gcloud
4个回答
3
投票

在 API 中,如

gcloud auth print-access-token
命令中一样,如果您在用户帐户上设置范围,则会失败。只能对服务帐户进行范围限制,而不能对用户帐户进行范围限制。

事实上,您可以像这样在用户帐户凭据上设置范围

gcloud auth application-default login --scopes=...
然后,当您生成令牌时,它将自动正确确定范围。

请记住,您特别需要限制凭证的范围以访问非 Google Cloud API(工作区、地图、Youtube...)


1
投票

我相信通过

gcloud auth application-default print-access-token
命令请求自定义范围在设计上不可用。

原因是您可以使用用户帐户或服务帐户登录 Google Cloud SDK。如果您使用

gcloud auth application-default login
登录用户帐户,Cloud SDK 仅请求完全访问 GCP API 的范围。

因此,当您运行

gcloud auth application-default print-access-token
时,Google Cloud SDK 无法通过您登录的帐户访问 GCP 之外的任何 API,因此它无法打印具有自定义范围的访问令牌。


0
投票

以下工具可帮助获取与 API 配合使用的 Bearer 令牌:

oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications

[

brew install oauth2l
或 https://github.com/google/oauth2l ]


0
投票

您可以使用 --scopes 标志来完成此操作。它不在帮助中,但它有效。 该命令看起来像

gcloud auth print-access-token [email protected] --scopes='https://www.googleapis.com/auth/travelpartner'

© www.soinside.com 2019 - 2024. All rights reserved.