요청 인증

자바용 Cloud 클라이언트 라이브러리는 자바용 Google Auth 라이브러리 를 사용하여 요청을 인증합니다. 이 라이브러리는 여러 인증 유형을 지원합니다. 자세한 내용은 프로젝트의 README.mdjavadoc을 참고하세요.

환경의 인증 Google Cloud

Compute Engine, Google Kubernetes Engine 또는 App Engine과 같은 Google Cloud 환경에서 Google Cloud 라이브러리를 사용하는 경우 추가 인증 단계를 수행할 필요가 없습니다.

추가 인증이 없는 호출의 예는 다음과 같습니다.

Storage storage = StorageOptions.getDefaultInstance().getService();

비Google Cloud 환경의 인증

비Google Cloud 환경에서 인증하려면 세 가지 일반적인 옵션이 있습니다.

  1. (권장사항) 서비스 계정을 사용합니다.
  2. 로컬 테스트 환경에서 Google Cloud SDK를 사용합니다.
  3. 기존 OAuth2 액세스 토큰을 사용합니다.

서비스 계정 사용

  1. JSON 서비스 계정 키를 생성합니다.

  2. 키를 다운로드한 후 다음 중 하나를 수행해야 합니다.

    • 환경 변수 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으로 애플리케이션 기본 사용자 인증 정보를 만듭니다. 자바용 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);

애플리케이션 기본 사용자 인증 정보

사용자 인증 정보를 제공하지 않으면 자바용 Cloud 클라이언트 라이브러리가 GoogleCredentials.getApplicationDefault()를 사용하여 환경에서 사용자 인증 정보를 감지하려고 시도합니다. 이 메서드는 다음 위치에서 애플리케이션 기본 사용자 인증 정보를 순서대로 검색합니다.

  1. GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 가리키는 사용자 인증 정보 파일
  2. Google Cloud SDK gcloud auth application-default login 명령어에서 제공하는 사용자 인증 정보
  3. Google App Engine의 기본 제공 사용자 인증 정보
  4. Google Cloud 셸의 기본 제공 사용자 인증 정보
  5. Google Compute Engine의 기본 제공 서비스 계정 사용자 인증 정보

API 키로 인증

일부 Google Cloud API는 API 키를 사용한 인증을 지원합니다.

자바용 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;
  }