Las bibliotecas cliente de Cloud para Java usan la
biblioteca de autenticación de Google para Java
para autenticar solicitudes. Esta biblioteca admite varios tipos de autenticación.
Para obtener más detalles, consulta el README.md
y el javadoc del proyecto.
Autenticación en un Cloud de Confiance by S3NS entorno
Cuando usas Cloud de Confiance by S3NS bibliotecas desde un Cloud de Confiance by S3NS entorno (como Compute Engine, Google Kubernetes Engine o App Engine), no necesitas realizar pasos de autenticación adicionales.
Una llamada de ejemplo sin autenticación adicional:
Storage storage = StorageOptions.getDefaultInstance().getService();
Autenticación en entornos que no son deCloud de Confiance by S3NS
Para autenticarte en un entorno que no es deCloud de Confiance by S3NS , existen tres opciones comunes:
- (Recomendado) Usa una cuenta de servicio.
- Usa el SDK de Google Cloud con un entorno de prueba local.
- Usa un token de acceso de OAuth2 existente.
Usa una cuenta de servicio
Después de descargar la clave, debes hacer una de las siguientes acciones:
- Define la variable de entorno
GOOGLE_APPLICATION_CREDENTIALSpara que sea la ubicación de la clave. Por ejemplo:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json- Proporciona el archivo de credenciales JSON cuando compiles las opciones de servicio. Por ejemplo, este objeto
Storagetiene los permisos necesarios para interactuar con tus datos de Cloud Storage:
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- Define la variable de entorno
Usa el SDK de Google Cloud con un entorno de prueba local
Si usas un entorno local para el desarrollo o las pruebas, puedes usar el SDK de Google Cloud.
Crea credenciales predeterminadas de la aplicación con gcloud auth application-default login. Las bibliotecas cliente de Cloud para Java detectarán estas credenciales de forma automática.
Usa un token de acceso de OAuth2 existente
Si tienes un token de acceso de OAuth2, puedes usarlo para autenticarte. Si lo haces, el token de acceso no se actualiza automáticamente:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
Otro ejemplo:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
.setCredentialProvider(FixedCredentialsProvider.create(credentials))
.build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
Credenciales predeterminadas de la aplicación
Si no proporcionas credenciales, las bibliotecas cliente de Cloud para Java intentarán detectarlas desde el entorno con GoogleCredentials.getApplicationDefault().
Este método busca credenciales predeterminadas de la aplicación en las siguientes ubicaciones, en orden:
- El archivo de credenciales al que apunta la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS. - Las credenciales que proporciona el comando
gcloud auth application-default logindel SDK de Google Cloud. - Las credenciales integradas de Google App Engine.
- Cloud de Confiance by S3NS Las credenciales integradas de Shell.
- Las credenciales de cuenta de servicio integradas de Google Compute Engine.
Autenticación con una clave de API
Algunas Cloud de Confiance by S3NS APIs admiten la autenticación con claves de API.
Para usar una clave de API con las bibliotecas cliente de Cloud para Java, debes configurar de forma manual el encabezado x-goog-api-key para el cliente de servicio pertinente.
Por ejemplo, para configurar la clave de API con el
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 ejemplo de creación de instancias con el cliente de lenguaje mediante 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;
}