2016-06-22 20 views
1

從appengine Web應用程序中訪問Google雲端存儲時,我遇到身份驗證問題。我想使用應用程序默認憑證。也許有人可以告訴我。gcloud:用於Cloud Storage(java)的appengine中的默認應用程序憑證

我有一個項目,服務帳戶: 「[email protected]」。

在第IAM項目有唯一的成員,[email protected](這是我的電子郵件地址),與角色所有者。

在該項目中,我有兩個雲端存儲分區,staging.x.appspot.com和x.appspot.com。我沒有編輯他們的權限。

在項目中,我有一個用Java編寫的appengine網絡應用程序。從它的代碼,我想訪問雲存儲這樣的:

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:devserver 

,並部署

mvn clean appengine:update 

我會認爲這已經足夠了。

但它的工作原理一臺計算機上devserver,另一臺計算機上,我得到異常「401無效的驗證」或類似的東西。我不知道電腦之間有什麼區別。

在部署的應用程序中,我得到了異常403 Forbidden。

所致:com.google.api.client.googleapis.json.GoogleJsonResponseException:403 { 「代碼」:403, 「錯誤」:[{ 「結構域」: 「全局」, 「消息「: 」禁止「, 」理由「: 」禁止入內「 }], 」消息「: 」禁止「 }

我在做什麼錯?

+1

每https://developers.google.com/identity/protocols/application-default-credentials#toolsupport,應用程序的默認憑據應該在App Engine上運行本身時正常工作,但可能只有當你開始AppEngine上默認本地工作與「gcloud預覽應用程序運行」。或者,在運行您的示例之前,嘗試運行'gcloud auth login'。 –

+0

^^回顯這個。您需要在默認憑據之前運行'gcloud auth login'或'gcloud auth activate-service-account'([docs](https://cloud.google.com/sdk/gcloud/reference/auth/))在開發中工作。 – Nick

+0

此主題的所有更新? – Nick

回答

0

由於布蘭登和尼克說,gcloud auth login與是所有者(所以不是服務帳戶)的谷歌用戶的伎倆。謝謝你的幫助。

相關問題