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 環境で認証を行うには、次の 3 つの一般的なオプションがあります。
- (推奨)サービス アカウントを使用します。
- ローカルテスト環境で 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 Shell の組み込み認証情報。
- 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;
}