我在示例 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 中为自定义范围设置访问密钥吗?
答案 0 :(得分: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,因此,它无法打印具有自定义范围的访问令牌。>
答案 1 :(得分:1)
在 API 中,就像在 gcloud auth print-access-token
命令中一样,如果您在用户帐户上设置范围,它将失败。只能限定服务帐户,不能限定用户帐户。
事实上,您可以像 gcloud auth application-default login --scopes=...
这样在您的用户帐户凭据上设置范围,然后,当您生成令牌时,它会自动正确地确定范围。
请记住,您尤其需要将凭据范围限定为不访问任何 Google Cloud API(工作区、地图、Youtube 等)
答案 2 :(得分:0)
以下工具有助于获取与 API 配合使用的不记名令牌:
oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications
[ brew install oauth2l
或 https://github.com/google/oauth2l ]