リクエストを認証する

Java 用 Cloud クライアント ライブラリは、 Java 用 Google 認証ライブラリ を使用してリクエストを認証します。このライブラリは、複数の認証タイプをサポートしています。 詳細については、プロジェクトの README.mdjavadocをご覧ください。

環境での認証 Cloud de Confiance by S3NS

環境( Compute Engine、Google Kubernetes Engine、App Engine など)から Cloud de Confiance by S3NS ライブラリを使用する場合、追加の認証手順を行う必要はありません。 Cloud de Confiance by S3NS

追加の認証なしの呼び出しの例:

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

環境以外での認証Cloud de Confiance by S3NS

環境以外で認証するには、次の 3 つの一般的な 方法があります。Cloud de Confiance by S3NS

  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 を使用してアプリケーションのデフォルト認証情報を作成します。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() を使用して環境から認証情報を検出します。 このメソッドは、次の場所でアプリケーションのデフォルト認証情報を検索します。

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数で指定された認証情報ファイル。
  2. Google Cloud SDK gcloud auth application-default login コマンドで指定された認証情報。
  3. Google App Engine の組み込み認証情報。
  4. Cloud de Confiance by S3NS シェルの組み込み認証情報。
  5. Google Compute Engine の組み込みサービス アカウント認証情報。

API キーを使用した認証

一部の Cloud de Confiance by S3NS 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 を使用した Language クライアントのインスタンス化の例:

 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;
  }