Java용 Cloud 클라이언트 라이브러리는 Java용 Google 인증 라이브러리를 사용하여 요청을 인증합니다. 이 라이브러리는 여러 인증 유형을 지원합니다.
자세한 내용은 프로젝트의 README.md 및 javadoc을 참고하세요.
Google Cloud 환경의 인증
Google Cloud 환경 (예: Compute Engine, Google Kubernetes Engine 또는 App Engine)의 Google Cloud 라이브러리를 사용하는 경우 추가 인증 단계를 수행할 필요가 없습니다.
추가 인증이 없는 호출의 예는 다음과 같습니다.
Storage storage = StorageOptions.getDefaultInstance().getService();
Google Cloud 이외의 환경에서의 인증
Google Cloud 환경이 아닌 환경에서 인증하는 데는 세 가지 일반적인 옵션이 있습니다.
- (권장) 서비스 계정을 사용합니다.
- 로컬 테스트 환경에서 Google Cloud SDK를 사용합니다.
- 기존 OAuth2 액세스 토큰을 사용합니다.
서비스 계정 사용
키를 다운로드한 후 다음 중 하나를 수행해야 합니다.
- 환경 변수
GOOGLE_APPLICATION_CREDENTIALS를 키의 위치로 정의합니다. 예를 들면 다음과 같습니다.
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json- 서비스 옵션을 빌드할 때 JSON 사용자 인증 정보 파일을 제공합니다. 예를 들어 이
Storage객체에는 Cloud Storage 데이터와 상호작용하는 데 필요한 권한이 있습니다.
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- 환경 변수
로컬 테스트 환경에서 Google Cloud SDK 사용
개발 또는 테스트에 로컬 환경을 사용하는 경우 Google Cloud SDK를 사용할 수 있습니다.
gcloud auth application-default login를 사용하여 애플리케이션 기본 사용자 인증 정보를 만듭니다. Java용 Cloud 클라이언트 라이브러리는 이러한 사용자 인증 정보를 자동으로 감지합니다.
기존 OAuth2 액세스 토큰 사용
OAuth2 액세스 토큰이 있는 경우 이를 사용하여 인증할 수 있습니다. 이 경우 액세스 토큰이 자동으로 새로고침되지 않습니다.
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
다른 예시를 확인해 보겠습니다.
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
.setCredentialProvider(FixedCredentialsProvider.create(credentials))
.build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
애플리케이션 기본 사용자 인증 정보
사용자 인증 정보를 제공하지 않으면 Java용 Cloud 클라이언트 라이브러리가 GoogleCredentials.getApplicationDefault()를 사용하여 환경에서 사용자 인증 정보를 감지하려고 시도합니다.
이 메서드는 다음 위치에서 순서대로 애플리케이션 기본 사용자 인증 정보를 검색합니다.
GOOGLE_APPLICATION_CREDENTIALS환경 변수가 가리키는 사용자 인증 정보 파일입니다.- Google Cloud SDK
gcloud auth application-default login명령어로 제공되는 사용자 인증 정보 - Google App Engine의 기본 사용자 인증 정보입니다.
- Google Cloud 셸의 기본 사용자 인증 정보입니다.
- Google Compute Engine의 기본 서비스 계정 사용자 인증 정보입니다.
API 키를 사용한 인증
일부 Google Cloud API는 API 키를 사용한 인증을 지원합니다.
Java용 Cloud 클라이언트 라이브러리와 함께 API 키를 사용하려면 관련 서비스 클라이언트에 대해 x-goog-api-key 헤더를 수동으로 설정해야 합니다.
예를 들어 Language service로 API 키를 설정하려면 다음을 실행합니다.
public LanguageServiceClient createGrpcClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key using the header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingGrpcChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}
REST를 사용하는 언어 클라이언트의 인스턴스화 예:
public LanguageServiceClient createRestClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingHttpJsonChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}