2016-06-22 8 views
1

App Engine 웹 앱에서 Google Cloud Storage에 액세스 할 때 인증에 문제가 있습니다. 응용 프로그램 기본 자격 증명을 사용하고 싶습니다. 어쩌면 누군가가 조언을 해줄 수 있습니다.gcloud : Cloud Storage 용 appengine의 기본 애플리케이션 자격증 명 (java)

저는 서비스 계정이 "[email protected]"인 프로젝트가 있습니다.

섹션 IAM 프로젝트에는 프로젝트 소유자 인 [email protected] (내 전자 메일 주소) 만 소유자 역할이 있습니다.

프로젝트에는 두 개의 Cloud Storage 버킷 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(); 

<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 예외가 발생합니다.

의해 발생 : com.google.api.client.googleapis.json.GoogleJsonResponseException : 403 { "코드"403 "오류"[{ "도메인": "글로벌" "메시지 ":"금지 ", "이유는 "" "" " }], "메시지를 금지} " 을 금지 내가 잘못

을 뭐하는 거지?

+1

https://developers.google.com/identity/protocols/application-default-credentials#toolsupport에서 App Engine 자체에서 실행할 때 응용 프로그램 기본 자격 증명이 정상적으로 작동하지만 App Engine을 시작하면 기본적으로 로컬로만 작동 할 수 있습니다. "gcloud 미리보기 앱 실행". 또는 샘플을 실행하기 전에'gcloud auth login'을 실행 해보십시오. –

+0

^^ 이것을 반향합니다. 기본 자격 증명을 사용하기 전에'gcloud auth login' 또는'gcloud auth activate-service-account' ([docs] (https://cloud.google.com/sdk/gcloud/reference/auth/))를 실행해야합니다. dev에 근무. – Nick

+0

이 스레드의 모든 업데이트? – Nick

답변

0

Brandon과 Nick이 말했듯이, gcloud auth login은 소유자 (서비스 계정이 아닌) 인 Google 사용자와 함께 트릭을 수행했습니다. 당신의 도움을 주셔서 감사합니다.