谷歌云平台身份验证

问题描述:

我在Google云平台上工作,我必须使用java非web应用程序访问云功能,例如我试图使用Google云存储JSON API存储和检索Google云存储中的对象。谷歌云平台身份验证

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

当我试图从谷歌云平台我结束了凭证的三种选择,如

  • API密钥
  • OAuth用户端ID
  • 服务凭证的账号密码

我经历了GCP文档,但没有得到明确的区分这些信息,我对GCP非常新,所以请你分享任何信息或博客链接,以解释将这些证书类型与示例Java程序一起输入,以显示如何使用Google Cloud客户端库Library API。

谷歌云平台的验证指南是明确的资源在这里: https://cloud.google.com/docs/authentication

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

API密钥为您提供了一种方法来确定您正在代表哪个项目进行API调用。它们适合限制代表项目进行配额的请求。 API密钥通常不被认为是安全的,因为它通常嵌入在客户端应用程序和网页中。因此,API密钥不提供认证或授权。如果匿名用户不能拨打电话,则API密钥不够用。

接下来是OAuth。 OAuth是通过Google帐户将真实的人类用户转变为经过验证的API调用的一种方式。当你想像自己一样做某事时,你会使用它,比如当你在本地运行一个像gcloud这样的应用时,或者如果你正在构建一个网站,需要人类允许他们在Google Cloud上做他们的事情代表。该过程涉及客户端ID和秘密,并以刷新令牌和访问令牌结束。有几种不同的口味。

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

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

下面是创建一个GCS桶计算引擎程序的an example

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")); 

就是这样!

+0

感谢您的即时回复,并让我清楚凭证选择! GoogleCredentials类使用服务帐户密钥对用户进行身份验证,因此您是否可以提供API片段,以显示如何使用OAuth客户端ID和API密钥,因为我需要使用所有这三种方法来实现身份验证。请提供谷歌云客户端库API示例 –

+0

有各种风格的OAuth。我不得不更多地了解您的应用要做什么才能很好地回答。这里有一份关于Google OAuth的通用指南:https://developers.google.com/identity/protocols/OAuth2以及一个Java库和示例:https://developers.google.com/api-client-library/java/ google-oauth-java-client/oauth2 –

+0

我正在开发一个简单的应用程序,为了从GCS中seck获取对象并在本地处理它,现在我需要提供选项来使用用户需要的任何凭据类型来进行身份验证,例如可能是OAuth客户端ID或服务帐户密钥等。我可以使用服务帐户密钥的JSON文件进行身份验证,并且希望使用从OAuth客户端ID获取的客户端秘密JSON文件。请建议'谷歌云客户端库API示例' –