Les bibliothèques clientes Cloud pour Java utilisent la bibliothèque Google Auth pour Java pour authentifier les requêtes. Cette bibliothèque est compatible avec plusieurs types d'authentification.
Pour en savoir plus, consultez les README.md et le javadoc du projet.
Authentification dans un environnement Google Cloud
Lorsque vous utilisez des bibliothèques Google Cloud à partir d'un environnement Google Cloud (tel que Compute Engine, Google Kubernetes Engine ou App Engine), vous n'avez pas besoin d'effectuer d'étapes d'authentification supplémentaires.
Exemple d'appel sans authentification supplémentaire :
Storage storage = StorageOptions.getDefaultInstance().getService();
Authentification dans les environnements autres queGoogle Cloud
Pour s'authentifier dans un environnement autre queGoogle Cloud , il existe trois options courantes :
- (Recommandé) Utilisez un compte de service.
- Utilisez le SDK Google Cloud avec un environnement de test local.
- Utilisez 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 lorsque vous créez les 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 le SDK Google Cloud 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. Si vous le faites, 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 :
- Fichier d'identifiants pointé par la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS. - Identifiants fournis par la commande
gcloud auth application-default logindu SDK Google Cloud. - Informations d'identification intégrées de Google App Engine.
- Google Cloud Identifiants intégrés de Shell.
- Identifiants du compte de service intégré de Google Compute Engine.
Authentification avec une clé API
Certaines API Google Cloud permettent l'authentification avec des 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 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 Language utilisant 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;
}