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 la README.md e la javadoc del progetto.
Autenticazione in un ambiente Cloud de Confiance by S3NS
Quando utilizzi le librerie Cloud de Confiance by S3NS da un ambiente Cloud de Confiance by S3NS (come Compute Engine, Google Kubernetes Engine o App Engine), non devi eseguire passaggi di autenticazione aggiuntivi.
Esempio di chiamata senza autenticazione aggiuntiva:
Storage storage = StorageOptions.getDefaultInstance().getService();
Autenticazione in ambienti nonCloud de Confiance by S3NS
Per l'autenticazione in un ambiente nonCloud de Confiance by S3NS , esistono tre opzioni comuni:
- (Consigliato) Utilizza un account di servizio.
- Utilizza Google Cloud SDK con un ambiente di test locale.
- Utilizza un token di accesso OAuth2 esistente.
Utilizzare un account di servizio
Dopo aver scaricato la chiave, devi effettuare una delle seguenti operazioni:
- Definisci la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALSin modo che corrisponda alla 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
Storagedispone delle autorizzazioni necessarie per interagire con i tuoi dati Cloud Storage:
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- Definisci la variabile di ambiente
Utilizzare Google Cloud SDK con un ambiente di test locale
Se utilizzi un ambiente locale per lo sviluppo o il test, puoi utilizzare 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.
Utilizzare un token di accesso OAuth2 esistente
Se hai un token di accesso OAuth2, 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:
- Il file delle credenziali a cui fa riferimento la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS. - Credenziali fornite dal comando
gcloud auth application-default logindi Google Cloud SDK. - Le credenziali integrate di Google App Engine.
- Cloud de Confiance by S3NS Credenziali integrate di Shell.
- Credenziali del account di servizio integrate di Google Compute Engine.
Autenticazione con una chiave API
Alcune API Cloud de Confiance by S3NS supportano l'autenticazione con le chiavi API.
Per utilizzare una chiave API con le librerie client 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
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 istanze 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;
}