gcloud:appengine中云存储(java)的默认应用程序凭据
从appengine web应用程序中访问Google云存储时,我在身份验证方面遇到困难。我想使用应用程序默认凭据。也许有人能给我建议 我有一个项目,具有服务帐户:“x@appspot.gserviceaccount.com“ 在IAM节中,项目只有一名成员,y@gmail.com(这是我的电子邮件地址),角色所有者 在这个项目中,我有两个云存储桶,staging.x.appspot.com和x.appspot.com。我没有编辑他们的权限 在这个项目中,我有一个用Java编写的appengine web应用程序。从其代码中,我希望访问云存储,如下所示:gcloud:appengine中云存储(java)的默认应用程序凭据,java,maven,google-app-engine,google-cloud-storage,Java,Maven,Google App Engine,Google Cloud Storage,从appengine web应用程序中访问Google云存储时,我在身份验证方面遇到困难。我想使用应用程序默认凭据。也许有人能给我建议 我有一个项目,具有服务帐户:“x@appspot.gserviceaccount.com“ 在IAM节中,项目只有一名成员,y@gmail.com(这是我的电子邮件地址),角色所有者 在这个项目中,我有两个云存储桶,staging.x.appspot.com和x.appspot.com。我没有编辑他们的权限 在这个项目中,我有一个用Java编写的appengin
import com.google.cloud.AuthCredentials;
import com.google.cloud.storage.Storage;
AuthCredentials credentials=AuthCredentials.createApplicationDefaults();
Storage storage=StorageOptions.builder().authCredentials(credentials).build().service();
使用maven依赖项
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>1.9.38</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-appengine</artifactId>
<version>0.4.0</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>gcloud-java</artifactId>
<version>0.2.3</version>
</dependency>
并与
mvn clean appengine:update
我认为这就足够了
但在一台计算机上的devserver中,它工作,在另一台计算机上,我得到异常“401无效身份验证”或类似的东西。我不知道计算机之间有什么区别
在部署的应用程序中,我得到异常403禁止
原因:com.google.api.client.googleapis.json.GoogleJsonResponseException:403
{
“代码”:403,
“错误”:[{
“域”:“全局”,
“消息”:“禁止”,
“原因”:“禁止”
} ],
“消息”:“禁止”
}
我做错了什么?正如Brandon和Nick所说,
gcloud auth login
与谷歌用户(而不是服务帐户)进行了欺骗。谢谢你的帮助。正如布兰登和尼克所说,gcloud auth login
与作为所有者的谷歌用户(而不是服务帐户)一起完成了这项任务。感谢您的帮助。Per,应用程序默认凭据在应用程序引擎本身上运行时应该可以正常工作,但如果您使用“gcloud preview App run”启动Appengine,则默认情况下只能在本地工作。或者,在运行示例之前,尝试运行gcloud auth login
。^^^重复此操作。您需要运行gcloud-auth-login
或gcloud-auth-activate-service-account
()才能在dev中使用默认凭据。此线程上有任何更新吗?嗯,我转到了bucket配置,并明确添加了用户权限“x@appspot.gserviceaccount.com“具有访问权限”Writer“。因此,我的应用程序可以正常工作,但我不会结束这个问题,因为我认为这应该是自动的,所以可能我还是做错了。根据,应用程序默认凭据在应用程序引擎本身上运行时应该可以正常工作,但如果您使用“gcloud preview App run”启动Appengine,则默认情况下只能在本地工作。或者,在运行示例之前,尝试运行gcloud auth login
。^^^重复此操作。您需要运行gcloud-auth-login
或gcloud-auth-activate-service-account
()才能在dev中使用默认凭据。此线程上有任何更新吗?嗯,我转到了bucket配置,并明确添加了用户权限“x@appspot.gserviceaccount.com“具有访问权限”Writer“。这样我的应用程序就可以工作了,但我不会结束这个问题,因为我认为这应该是自动的,所以也许我还是做错了什么。
mvn clean appengine:update