Autenticare le richieste

Le librerie client di Cloud per Java utilizzano la libreria di autenticazione Google per Java per autenticare le richieste. Questa libreria supporta più tipi di autenticazione. Per maggiori dettagli, consulta README.md e javadoc del progetto.

Autenticazione in un Cloud de Confiance by S3NS ambiente

Quando utilizzi Cloud de Confiance by S3NS le librerie da un Cloud de Confiance by S3NS ambiente (ad esempio Compute Engine, Google Kubernetes Engine o App Engine), non devi eseguire passaggi di autenticazione aggiuntivi.

Un esempio di chiamata senza autenticazione aggiuntiva:

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

Autenticazione in ambienti non-Cloud de Confiance by S3NS

Per eseguire l'autenticazione in un ambiente non-Cloud de Confiance by S3NS esistono tre opzioni comuni:

  1. (Consigliato) Utilizza un account di servizio.
  2. Utilizza Google Cloud SDK con un ambiente di test locale.
  3. Utilizza un token di accesso OAuth 2 esistente.

Utilizza un account di servizio

  1. Genera una chiave JSON dell'account di servizio.

  2. Dopo aver scaricato la chiave, devi eseguire una delle seguenti operazioni:

    • Definisci la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che sia la posizione della chiave. Ad esempio:
    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json
    
    • Fornisci il file JSON delle credenziali durante la creazione delle opzioni di servizio. Ad esempio, questo oggetto Storage dispone delle autorizzazioni necessarie per interagire con i dati di Cloud Storage:
    Storage storage = StorageOptions.newBuilder()
        .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json")))
        .build()
        .getService();
    

Utilizza Google Cloud SDK con un ambiente di test locale

Se utilizzi un ambiente locale per lo sviluppo o il test, puoi utilizzare il Google Cloud SDK.

Crea le credenziali predefinite dell'applicazione con gcloud auth application-default login. Le librerie client di Cloud per Java rileveranno automaticamente queste credenziali.

Utilizza un token di accesso OAuth 2 esistente

Se hai un token di accesso OAuth 2, puoi utilizzarlo per l'autenticazione. In questo caso, il token di accesso non viene aggiornato automaticamente:

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

Un altro esempio:

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

Credenziali predefinite dell'applicazione

Se non fornisci le credenziali, le librerie client di Cloud per Java tenteranno di rilevarle dall'ambiente utilizzando GoogleCredentials.getApplicationDefault(). Questo metodo cerca le credenziali predefinite dell'applicazione nelle seguenti posizioni, in ordine:

  1. Il file delle credenziali a cui fa riferimento la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.
  2. Credenziali fornite dal comando gcloud auth application-default login di Google Cloud SDK.
  3. Credenziali integrate di Google App Engine.
  4. Cloud de Confiance by S3NS Credenziali integrate della shell.
  5. Credenziali dell'account di servizio integrate di Google Compute Engine.

Autenticazione con una chiave API

Alcune Cloud de Confiance by S3NS API supportano l'autenticazione con le chiavi API.

Per utilizzare una chiave API con le librerie client di Cloud per Java, devi impostare manualmente l'intestazione x-goog-api-key per il client di servizio pertinente.

Ad esempio, per impostare la chiave API con il 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;
  }

Un esempio di creazione di un'istanza con il client Language utilizzando 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;
  }