如何确定在本地使用 Google Cloud Platform 客户端库时的身份验证方法



我目前能够运行一个本地python脚本,该脚本使用python客户端库调用Google vision API(具体来说,我使用的是google-cloud-vision包)。 但是,我很好奇它是如何进行身份验证的。 在我在本地运行的 python 脚本中,我没有提供任何身份验证信息。 通过阅读下面的帖子,似乎在本地运行时进行身份验证的常用方法是将环境变量设置为.JSON 密钥文件(即export GOOGLE_APPLICATION_CREDENTIALS = path/to/JSON/key/file),但是,我不记得这样做过,如果我运行printenv,我没有一个名为 GOOGLE_APPLICATION_CREDENTIALS 的环境变量。

下面的帖子提供了有关在本地使用客户端库进行身份验证的不同方法的更多详细信息,但是如何查看/确定我的程序是如何进行身份验证的呢? 有没有办法查询这个?

"向云视觉 API 进行身份验证"...包括上述页面的"应用程序默认凭据"部分

为实例创建和启用服务帐户的"使用客户端库对应用程序进行身份验证"部分

">

为服务器到服务器生产功能设置身份验证"页的"向应用程序提供凭据"部分

"身份验证入门"页面的"设置环境变量"部分:

Python 客户端库"入门"页面:

"对云 API 服务进行身份验证">

有4 种不同的方法可以在不创建凭据对象的情况下对请求进行身份验证。

  1. 如果环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为有效服务帐户 JSON 私钥文件的路径,则使用该变量。
  2. 如果已安装 Google Cloud SDK,并且设置了应用默认凭据,则系统会使用该凭据。请注意,如果您过去执行过一次此步骤,它将保持有效。(我猜这是您当前用于身份验证的内容。
  3. 如果应用程序在应用引擎标准环境中运行,则使用来自应用标识服务的凭据和项目 ID。(这里不适用,但为了完整起见,我列出了它。
  4. 如果应用程序在计算引擎或 App Engine 灵活环境中运行,则会从元数据服务获取凭据和项目 ID。(这里不适用,但为了完整起见,我也列出了它。

如果使用上述方法未找到凭据,则会引发 DefaultCredentialsError。由于您没有收到此错误,并且您没有设置#1中的环境变量,并且选项#3和#4不适用,因此剩下的唯一选项是数字#2。

上述信息可以在 google-cloud 身份验证页面的 readthedocs.io 页面上找到,更具体地说,可以在 google.auth 包页面中找到

您可以通过运行以下命令来检查是否设置了应用程序默认凭据:

gcloud auth application-default print-access-token 

如果这不返回错误而是返回访问令牌,则表示已设置 #2。当然不要与任何人分享这个令牌...

一些相关信息,你可以在这里查看用上面的命令打印出来的令牌,或者使用下面的curl命令(将令牌粘贴到最后):

curl -i https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

这并不能完全回答您的问题,但通过消除过程,它应该是正确的问题......

相关内容

  • 没有找到相关文章

最新更新