Les bibliothèques clientes Cloud pour Java utilisent la
bibliothèque Google Auth pour Java
afin d'authentifier les requêtes. Cette bibliothèque est compatible avec plusieurs types d'authentification.
Pour en savoir plus, consultez le fichier README.md
et la documentation javadoc du projet.
Authentification dans un Google Cloud environnement
Lorsque vous utilisez des Google Cloud bibliothèques à partir d'un Google Cloud environnement (tel que Compute Engine, Google Kubernetes Engine ou App Engine), vous n'avez pas besoin d'effectuer d'étapes d'authentification supplémentaires.
Voici un exemple d'appel sans authentification supplémentaire :
Storage storage = StorageOptions.getDefaultInstance().getService();
Authentification dans desenvironnements non-Google Cloud
Pour vous authentifier dans unenvironnement non-Google Cloud , vous disposez de trois options courantes :
- (Recommandé) Utiliser un compte de service
- Utiliser Google Cloud SDK avec un environnement de test local
- Utiliser un jeton d'accès OAuth2 existant
Utiliser un compte de service
Après avoir téléchargé la clé, vous devez effectuer l'une des opérations suivantes :
- Définissez la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALSsur l'emplacement de la clé. Exemple :
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json- Fournissez le fichier d'identifiants JSON lors de la création des options de service. Par exemple, cet objet
Storagedispose des autorisations nécessaires pour interagir avec vos données Cloud Storage :
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- Définissez la variable d'environnement
Utiliser Google Cloud SDK avec un environnement de test local
Si vous utilisez un environnement local pour le développement ou les tests, vous pouvez utiliser le SDK Google Cloud.
Créez des identifiants par défaut de l'application avec gcloud auth application-default login. Les bibliothèques clientes Cloud pour Java détecteront automatiquement ces identifiants.
Utiliser un jeton d'accès OAuth2 existant
Si vous disposez d'un jeton d'accès OAuth2, vous pouvez l'utiliser pour vous authentifier. Dans ce cas, le jeton d'accès n'est pas actualisé automatiquement :
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
Prenons cet autre exemple :
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
.setCredentialProvider(FixedCredentialsProvider.create(credentials))
.build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
Identifiants par défaut de l'application
Si vous ne fournissez pas d'identifiants, les bibliothèques clientes Cloud pour Java tenteront de les détecter à partir de l'environnement à l'aide de GoogleCredentials.getApplicationDefault().
Cette méthode recherche les identifiants par défaut de l'application dans les emplacements suivants, dans l'ordre :
- Le fichier d'identifiants vers lequel pointe la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS. - Les identifiants fournis par la commande
gcloud auth application-default loginde Google Cloud SDK. - Les identifiants intégrés de Google App Engine.
- Google Cloud Les identifiants intégrés du shell.
- Les identifiants de compte de service intégrés de Google Compute Engine.
Authentification avec une clé API
Certaines Google Cloud API sont compatibles avec l'authentification à l'aide de clés API.
Pour utiliser une clé API avec les bibliothèques clientes Cloud pour Java, vous devez définir manuellement l'en-tête x-goog-api-key pour le client de service concerné.
Par exemple, pour définir la clé API avec le
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;
}
Voici un exemple d'instanciation avec le client de langage à l'aide de 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;
}