【问题标题】:Authenticating google cloud behind corporate firewall在企业防火墙后面对谷歌云进行身份验证
【发布时间】:2017-03-01 19:46:11
【问题描述】:

我正在尝试在工作中使用 Google Cloud 的自然语言 API,我认为我的公司防火墙阻止了 python 和 google cloud 之间的通信。

在终端输入以下内容后:

gcloud auth application-default login

我的浏览器打开并成功登录我的谷歌帐户。但是,在我登录后,我得到了

ERROR: There was a problem with web authentication. Try running a
gain with --no-launch-browser.

ERROR: (gcloud.auth.application-default.login) Could not reach th
e login server. A potential cause of this could be because you ar
e behind a proxy. Please set the environment variables HTTPS_PROX
Y and HTTP_PROXY to the address of the proxy in the format "proto
col://address:port" (without quotes) and try again.
Example: HTTPS_PROXY=https://192.168.0.1:8080

我认为我需要联系我的 IT 部门为我们的防火墙添加例外。有谁知道google cloud的自然语言处理API的地址/端口是什么?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-nl


    【解决方案1】:

    我无法直接回答您的问题,但我可以提供一些可能会解决您的问题的一般性指导。

    命令

    gcloud auth application-default login
    

    是在本地运行示例代码的便捷助手,但由于各种原因,它确实不是最好的身份验证策略。它使用一个特殊的客户端 ID,它并不总是拥有您的所有配额。

    我建议使用 API 的方式是服务帐户。您可以在 Cloud Console 中的 API 凭据下创建服务帐号,然后下载 JSON 密钥。然后将环境变量GOOGLE_APPLICATION_CREDENTIALS 设置为指向您的文件,假设您使用的是应用程序默认凭据(大多数示例和客户端库都使用),它将自动工作。

    在 App Engine 和 Compute Engine 上(假设您创建了具有正确范围的 VM)服务帐户默认存在,因此您甚至不需要下载 JSON 并设置环境变量。

    您可以使用 API 的另一种方法是创建一个 API 密钥,然后在 URL 的末尾使用 ?key=api-key 访问 HTTP 端点。 API 密钥也不太理想(不知道客户是谁,没有范围),但它是一个简单的选项。

    在您的情况下,我建议使用 JSON 服务帐户密钥和环境变量,但值得阅读官方 authentication guide

    【讨论】:

    • 您使用服务帐户的建议有效,但您能否详细说明“...然后在 URL 末尾使用 ?key=api-key 访问 HTTP 端点”?我已经在谷歌云控制台中成功生成了一个 API 密钥,现在我应该去我的终端并改变一些东西吗?还是这是 python 设置?
    • @Lee88 api 密钥的使用方式是在点击 HTTP/REST 端点时添加 api 密钥作为 URL 参数,正如我所描述的。因此,例如,您可以使用常规 HTTP 客户端包(如请求)来访问端点并将 API 密钥设置为 URL 参数。但是是的,通常你使用 Pyton 客户端库。如果您使用的是 google-api-python-client(旧的通用客户端),您可以在 service.build() 中使用 developerKey=api-key 参数。如果您使用的是 google-cloud-python(现代客户端),它不支持 API 密钥。为什么?因为 API 密钥并不是真正的好主意,所以不鼓励使用。
    • 如果您的服务帐户最有效地坚持使用它们,因为它们具有最细粒度的访问控制,并且迄今为止最不可能让您头疼。如果您只是在搞乱 curl 之类的东西,那么 API 密钥最有用。
    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 2010-09-16
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多