繁体   English   中英

谷歌云平台中的身份验证

[英]Authentication in Google Cloud Platform

我在 Google Cloud Platform 上工作,我必须使用 java 非 Web 应用程序访问云功能,就像我尝试使用 Google Cloud Storage JSON API 从 Google Cloud Storage 存储和检索对象一样。

在访问那些我需要验证我的应用程序之前,我找到了授权 API 来获得授权访问。

当我尝试从 Google Cloud Platform 获取凭据时,我最终得到了三种凭据选择

  • API密钥
  • OAuth 客户端 ID
  • 服务帐号密钥

我浏览了 GCP 文档,但没有得到区分这些的明确信息,我对 GCP 还很陌生,所以你能否分享任何解释这些凭据类型的信息或博客链接,以及显示如何使用Google的示例 Java 程序云客户端库API。

Google Cloud Platform 的授权指南是这里的权威资源: https ://cloud.google.com/docs/authentication

Google 的各种身份验证机制服务于不同的目的,所以让我解释一下您询问的那些,您应该会更加清楚正确的选择。

API 密钥为您提供了一种方法来识别您代表哪个项目进行 API 调用。 它们适用于使用配额限制代表您的项目发出的请求。 API 密钥通常不被认为是安全的,因为它通常嵌入在客户端应用程序和网页中。 因此,API 密钥不提供身份验证或授权。 如果匿名用户不应该能够进行调用,则 API 密钥是不够的。

接下来,OAuth。 OAuth 是一种将拥有 Google 帐户的真实人类用户转变为经过身份验证的 API 调用的方法。 当您想自己做某事时,您将使用它,例如当您在本地运行gcloud等应用程序时,或者如果您正在构建一个网站需要征得人们的许可才能在他们的设备上使用 Google Cloud 做事代表。 此过程涉及客户端 ID 和机密,并以刷新令牌和访问令牌结束。 有几种不同的口味。

最后,服务帐户。 如果您的应用程序在某个地方自行运行,而不是作为任何特定的人运行,您应该通过为您的应用程序创建一个服务帐户来建模。 服务帐户是没有密码的特殊用户。 相反,他们拥有可以与应用程序一起部署的私钥文件,以便他们可以以自己的身份进行身份验证。 这通常是您想要的,除非您的应用程序需要代表特定用户运行(例如gcloudgsutil等云管理程序)。

Google Cloud Java 库提供了一个名为“ 应用程序默认凭证”的功能,如果您的应用程序在 App Engine 或 GCE 中运行,则无需配置身份验证。 如果您想在本地计算机上以自己的身份运行代码并安装了gcloud ,它还可以处理身份验证。

以下是创建 GCS 存储桶的 Compute Engine 程序示例

Storage storage = StorageOptions.getDefaultInstance().getService();
Bucket bucket = storage.create(BucketInfo.of("myBucketName"));

请注意它根本没有说明任何关于 auth 的信息。 应用程序默认凭据负责选择适当的服务帐户或用户。 不过,这假设您处于这样的环境中。 如果你有一个私钥.json 文件,你会这样做:

Storage storage = StorageOptions.newBuilder()
    .setProjectId(PROJECT_ID)
    .setCredentials(GoogleCredentials.fromStream(
        new FileInputStream(PATH_TO_JSON_KEY))).build();
Bucket bucket = storage.create(BucketInfo.of("myBucketName"));

就是这样!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM