Mengautentikasi permintaan Anda

Library Klien Cloud untuk Java menggunakan Library Google Auth untuk Java untuk mengautentikasi permintaan. Library ini mendukung beberapa jenis autentikasi. Untuk mengetahui detail selengkapnya, lihat README.md dan javadoc project.

Autentikasi di lingkungan Google Cloud

Saat menggunakan library Google Cloud dari lingkungan Google Cloud (seperti Compute Engine, Google Kubernetes Engine, atau App Engine), Anda tidak perlu melakukan langkah-langkah autentikasi tambahan.

Contoh panggilan tanpa autentikasi tambahan:

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

Autentikasi di lingkungan non-Google Cloud

Untuk melakukan autentikasi di lingkungan non-Google Cloud , ada tiga opsi umum:

  1. (Direkomendasikan) Gunakan akun layanan.
  2. Gunakan Google Cloud SDK dengan lingkungan pengujian lokal.
  3. Gunakan token akses OAuth2 yang ada.

Menggunakan akun layanan

  1. Buat kunci akun layanan JSON.

  2. Setelah mendownload kunci, Anda harus melakukan salah satu tindakan berikut:

    • Tentukan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS sebagai lokasi kunci. Contoh:
    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json
    
    • Berikan file kredensial JSON saat membuat opsi layanan. Misalnya, objek Storage ini memiliki izin yang diperlukan untuk berinteraksi dengan data Cloud Storage Anda:
    Storage storage = StorageOptions.newBuilder()
        .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json")))
        .build()
        .getService();
    

Menggunakan Google Cloud SDK dengan lingkungan pengujian lokal

Jika menggunakan lingkungan lokal untuk pengembangan atau pengujian, Anda dapat menggunakan Google Cloud SDK.

Buat Kredensial Default Aplikasi dengan gcloud auth application-default login. Library Klien Cloud untuk Java akan mendeteksi kredensial ini secara otomatis.

Menggunakan token akses OAuth2 yang ada

Jika memiliki token akses OAuth2, Anda dapat menggunakannya untuk mengautentikasi. Jika Anda melakukannya, token akses tidak akan diperbarui secara otomatis:

Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
    .setCredentials(credentials)
    .build()
    .getService();

Contoh lain:

Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
    .setCredentialProvider(FixedCredentialsProvider.create(credentials))
    .build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);

Kredensial Default Aplikasi

Jika Anda tidak memberikan kredensial, Library Klien Cloud untuk Java akan mencoba mendeteksinya dari lingkungan menggunakan GoogleCredentials.getApplicationDefault(). Metode ini menelusuri Kredensial Default Aplikasi di lokasi berikut, secara berurutan:

  1. File kredensial yang ditunjukkan oleh variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.
  2. Kredensial yang disediakan oleh perintah gcloud auth application-default login Google Cloud SDK.
  3. Kredensial bawaan Google App Engine.
  4. Google Cloud Kredensial bawaan Shell.
  5. Kredensial akun layanan bawaan Google Compute Engine.

Autentikasi dengan kunci API

Beberapa Google Cloud API mendukung autentikasi dengan kunci API.

Untuk menggunakan kunci API dengan Library Klien Cloud untuk Java, Anda harus menetapkan header x-goog-api-key secara manual untuk klien layanan yang relevan.

Misalnya, untuk menyetel kunci API dengan Language service:

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

Contoh pembuatan instance dengan Language Client menggunakan 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;
  }