Mengautentikasi permintaan Anda

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

Autentikasi di lingkungan Cloud de Confiance by S3NS

Saat menggunakan Cloud de Confiance by S3NS library dari Cloud de Confiance by S3NS lingkungan (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-Cloud de Confiance by S3NS

Untuk melakukan autentikasi di lingkungan non-Cloud de Confiance by S3NS ada tiga opsi umum:

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

Menggunakan akun layanan

  1. Membuat kunci akun layanan JSON.

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

    • Menentukan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS sebagai lokasi kunci. Contoh:
    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json
    
    • Menyediakan 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 otomatis mendeteksi kredensial ini.

Menggunakan token akses OAuth2 yang ada

Jika memiliki token akses OAuth2, Anda dapat menggunakannya untuk melakukan autentikasi. Jika Anda melakukannya, token akses tidak akan otomatis direfresh:

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

Contoh lainnya:

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. Cloud de Confiance by S3NS Kredensial bawaan shell.
  5. Kredensial akun layanan bawaan Google Compute Engine.

Autentikasi dengan kunci API

Beberapa Cloud de Confiance by S3NS 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 menetapkan 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 Klien Bahasa 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;
  }