gpt4 book ai didi

google-cloud-platform - Google Cloud Platform 中的身份验证

转载 作者:行者123 更新时间:2023-12-04 03:42:22 33 4
gpt4 key购买 nike

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

在访问那些我需要对我的应用程序进行身份验证之前,我发现授权 API 具有授权访问权限。

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

  • API key
  • OAuth 客户端 ID
  • 服务帐号 key

  • 我浏览了 GCP 文档,但没有得到明确的信息来区分这些文档,我对 GCP 非常陌生,所以请您分享任何信息或博客链接来解释这些凭证类型以及示例 Java 程序,这些程序显示如何使用 谷歌云客户端库 API。

    最佳答案

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

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

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

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

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

    Google Cloud Java library提供名为“Application Default Credentials”的功能,如果您的应用程序在 App Engine 或 GCE 中运行,则无需配置身份验证。如果您想在本地机器上以自己的身份运行代码并拥有 gcloud,它也可以处理身份验证。安装。

    这里是 an example创建 GCS 存储桶的 Compute Engine 程序:

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

    请注意它根本没有说明任何关于身份验证的内容。应用程序默认凭据负责选择适当的服务帐户或用户。不过,这假设您处于这样的环境中。如果你有一个私钥 .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"));

    就是这样!

    关于google-cloud-platform - Google Cloud Platform 中的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43625652/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com