從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, 「錯誤」:[{ 「結構域」: 「全局」, 「消息「: 」禁止「, 」理由「: 」禁止入內「 }], 」消息「: 」禁止「 }
我在做什麼錯?
每https://developers.google.com/identity/protocols/application-default-credentials#toolsupport,應用程序的默認憑據應該在App Engine上運行本身時正常工作,但可能只有當你開始AppEngine上默認本地工作與「gcloud預覽應用程序運行」。或者,在運行您的示例之前,嘗試運行'gcloud auth login'。 –
^^回顯這個。您需要在默認憑據之前運行'gcloud auth login'或'gcloud auth activate-service-account'([docs](https://cloud.google.com/sdk/gcloud/reference/auth/))在開發中工作。 – Nick
此主題的所有更新? – Nick