首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google平台中的认证

Google平台中的认证
EN

Stack Overflow用户
提问于 2017-04-26 05:21:23
回答 1查看 9.2K关注 0票数 9

我正在研究Google平台,我必须使用java非web应用程序访问云功能,就像我试图使用从Google存储和检索对象一样。

在访问这些应用程序之前,我需要对我的应用程序进行身份验证,因此我找到了授权API来进行授权访问。

当我试图从Google平台获得凭据时,我得到了三种选择

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

我阅读了GCP文档,但没有获得区分它们之间的清晰信息,所以我对GCP非常陌生,所以请您共享任何信息或博客链接来解释这些凭据类型,并使用示例程序说明如何使用 API。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 06:27:47

Google的Auth是这里的最终资源:https://cloud.google.com/docs/authentication

Google的各种机制服务于不同的目的,所以让我解释一下你问过的那些,正确的选择应该变得更清楚。

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

接下来,OAuth。OAuth是一种将拥有Google的真实的人类用户转化为经过身份验证的API调用的方法。当你想像你自己一样做一些事情的时候,比如你在本地运行一个像gcloud这样的应用程序,或者如果你正在构建一个需要向人类请求许可来代表他们使用Google的网站的话,你就会使用它。此过程涉及客户端ID和机密,并以刷新令牌和访问令牌结束。有几种不同的口味。

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

提供了一个名为"应用程序默认凭据“的功能,如果应用程序在App或GCE中运行,就不需要配置auth。如果您希望在本地机器上以自己的身份运行代码并安装gcloud,它还可以照顾auth。

下面是一个计算机引擎程序的一个例子,它创建了一个GCS桶:

代码语言:javascript
运行
复制
Storage storage = StorageOptions.getDefaultInstance().getService();
Bucket bucket = storage.create(BucketInfo.of("myBucketName"));

注意,它完全没有提到任何关于auth的事情。应用程序默认凭据负责选择合适的服务帐户或用户。但是,这假设您处于这样的环境中。如果您有一个私钥.json文件,您可以这样做:

代码语言:javascript
运行
复制
Storage storage = StorageOptions.newBuilder()
    .setProjectId(PROJECT_ID)
    .setCredentials(GoogleCredentials.fromStream(
        new FileInputStream(PATH_TO_JSON_KEY))).build();
Bucket bucket = storage.create(BucketInfo.of("myBucketName"));

就这样!

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43625652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档