En esta página se describe cómo puedes usar bibliotecas de cliente para acceder a las APIs de Google.
Las bibliotecas de cliente facilitan el acceso a las Trusted Cloud by S3NS APIs
con un lenguaje compatible. Puedes usar las APIs de Trusted Cloud by S3NS directamente haciendo solicitudes sin formato al servidor, pero las bibliotecas de cliente ofrecen simplificaciones que reducen significativamente la cantidad de código que tienes que escribir. Esto es especialmente cierto en el caso de la autenticación, ya que las bibliotecas de cliente admiten las credenciales predeterminadas de la aplicación (ADC).
Usar credenciales de aplicación predeterminadas con bibliotecas de cliente
Para usar las credenciales de aplicación predeterminadas y autenticar tu aplicación, primero debes configurar las ADC en el entorno en el que se ejecuta tu aplicación. Cuando usas la biblioteca de cliente para crear un cliente, la biblioteca de cliente comprueba automáticamente las credenciales que has proporcionado a ADC y las usa para autenticarse en las APIs que usa tu código. Tu aplicación no necesita autenticarse explícitamente ni gestionar tokens. Las bibliotecas de autenticación se encargan de estos requisitos automáticamente.
En los siguientes ejemplos de código se crea un cliente para el servicio Cloud Storage.
Es probable que tu código necesite diferentes clientes. Estos ejemplos solo tienen como objetivo mostrar cómo puedes crear un cliente y usarlo sin ningún código para autenticarte explícitamente.
Antes de ejecutar los siguientes ejemplos, debes completar estos pasos:
Define la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Go
import("context""fmt""io""cloud.google.com/go/storage""google.golang.org/api/iterator")// authenticateImplicitWithAdc uses Application Default Credentials// to automatically find credentials and authenticate.funcauthenticateImplicitWithAdc(wio.Writer,projectIdstring)error{// projectId := "your_project_id"ctx:=context.Background()// NOTE: Replace the client created below with the client required for your application.// Note that the credentials are not specified when constructing the client.// The client library finds your credentials using ADC.client,err:=storage.NewClient(ctx)iferr!=nil{returnfmt.Errorf("NewClient: %w",err)}deferclient.Close()it:=client.Buckets(ctx,projectId)for{bucketAttrs,err:=it.Next()iferr==iterator.Done{break}iferr!=nil{returnerr}fmt.Fprintf(w,"Bucket: %v\n",bucketAttrs.Name)}fmt.Fprintf(w,"Listed all storage buckets.\n")returnnil}
Java
importcom.google.api.gax.paging.Page;importcom.google.cloud.storage.Bucket;importcom.google.cloud.storage.Storage;importcom.google.cloud.storage.StorageOptions;importjava.io.IOException;publicclassAuthenticateImplicitWithAdc{publicstaticvoidmain(String[]args)throwsIOException{// TODO(Developer):// 1. Before running this sample,// set up Application Default Credentials as described in// https://cloud.google.com/docs/authentication/external/set-up-adc// 2. Replace the project variable below.// 3. Make sure you have the necessary permission to list storage buckets// "storage.buckets.list"StringprojectId="your-google-cloud-project-id";authenticateImplicitWithAdc(projectId);}// When interacting with Google Cloud Client libraries, the library can auto-detect the// credentials to use.publicstaticvoidauthenticateImplicitWithAdc(Stringproject)throwsIOException{// *NOTE*: Replace the client created below with the client required for your application.// Note that the credentials are not specified when constructing the client.// Hence, the client library will look for credentials using ADC.//// Initialize client that will be used to send requests. This client only needs to be created// once, and can be reused for multiple requests.Storagestorage=StorageOptions.newBuilder().setProjectId(project).build().getService();System.out.println("Buckets:");Page<Bucket>buckets=storage.list();for(Bucketbucket:buckets.iterateAll()){System.out.println(bucket.toString());}System.out.println("Listed all storage buckets.");}}
Node.js
/** * TODO(developer): * 1. Uncomment and replace these variables before running the sample. * 2. Set up ADC as described in https://cloud.google.com/docs/authentication/external/set-up-adc * 3. Make sure you have the necessary permission to list storage buckets "storage.buckets.list" * (https://cloud.google.com/storage/docs/access-control/iam-permissions#bucket_permissions) */// const projectId = 'YOUR_PROJECT_ID';const{Storage}=require('@google-cloud/storage');asyncfunctionauthenticateImplicitWithAdc(){// This snippet demonstrates how to list buckets.// NOTE: Replace the client created below with the client required for your application.// Note that the credentials are not specified when constructing the client.// The client library finds your credentials using ADC.conststorage=newStorage({projectId,});const[buckets]=awaitstorage.getBuckets();console.log('Buckets:');for(constbucketofbuckets){console.log(`- ${bucket.name}`);}console.log('Listed all storage buckets.');}authenticateImplicitWithAdc();
PHP
// Imports the Cloud Storage client library.use Google\Cloud\Storage\StorageClient;/** * Authenticate to a cloud client library using a service account implicitly. * * @param string $projectId The Google project ID. */function auth_cloud_implicit($projectId){ $config = [ 'projectId' => $projectId, ]; # If you don't specify credentials when constructing the client, the # client library will look for credentials in the environment. $storage = new StorageClient($config); # Make an authenticated API request (listing storage buckets) foreach ($storage->buckets() as $bucket) { printf('Bucket: %s' . PHP_EOL, $bucket->name()); }}
Python
fromgoogle.cloudimportstoragedefauthenticate_implicit_with_adc(project_id="your-google-cloud-project-id"):""" When interacting with Google Cloud Client libraries, the library can auto-detect the credentials to use. // TODO(Developer): // 1. Before running this sample, // set up ADC as described in https://cloud.google.com/docs/authentication/external/set-up-adc // 2. Replace the project variable. // 3. Make sure that the user account or service account that you are using // has the required permissions. For this sample, you must have "storage.buckets.list". Args: project_id: The project id of your Google Cloud project. """# This snippet demonstrates how to list buckets.# *NOTE*: Replace the client created below with the client required for your application.# Note that the credentials are not specified when constructing the client.# Hence, the client library will look for credentials using ADC.storage_client=storage.Client(project=project_id)buckets=storage_client.list_buckets()print("Buckets:")forbucketinbuckets:print(bucket.name)print("Listed all storage buckets.")
Ruby
defauthenticate_implicit_with_adcproject_id:# The ID of your Google Cloud project# project_id = "your-google-cloud-project-id"#### When interacting with Google Cloud Client libraries, the library can auto-detect the# credentials to use.# TODO(Developer):# 1. Before running this sample,# set up ADC as described in https://cloud.google.com/docs/authentication/external/set-up-adc# 2. Replace the project variable.# 3. Make sure that the user account or service account that you are using# has the required permissions. For this sample, you must have "storage.buckets.list".###require"google/cloud/storage"# This sample demonstrates how to list buckets.# *NOTE*: Replace the client created below with the client required for your application.# Note that the credentials are not specified when constructing the client.# Hence, the client library will look for credentials using ADC.storage=Google::Cloud::Storage.newproject_id:project_idbuckets=storage.bucketsputs"Buckets: "buckets.eachdo|bucket|putsbucket.nameendputs"Plaintext: Listed all storage buckets."end
Usar claves de API con bibliotecas de cliente
Solo puedes usar claves de API con bibliotecas de cliente de APIs que acepten claves de API. Además, la clave de API no debe tener una restricción de API que impida que se use en la API.
Cuando uses claves de API en tus aplicaciones, asegúrate de que se mantengan protegidas tanto durante el almacenamiento como durante la transmisión. Si expones públicamente tus claves de API, es posible que se apliquen cargos inesperados a tu cuenta. Para obtener más información, consulta las prácticas recomendadas para gestionar las claves de API.
Requisitos de seguridad al usar configuraciones de credenciales de una fuente externa
Normalmente, las configuraciones de credenciales se generan mediante comandos de la CLI de gcloud o con la Trusted Cloud consola. Por ejemplo, puedes usar la CLI de gcloud para generar un archivo ADC local o un archivo de configuración de inicio de sesión. Del mismo modo, puedes usar la consola de Trusted Cloud para crear y descargar una clave de cuenta de servicio.
Sin embargo, en algunos casos de uso, una entidad externa te proporciona configuraciones de credenciales. Estas configuraciones se deben usar para autenticarte en las APIs de Google.
Algunos tipos de configuraciones de credenciales incluyen endpoints y rutas de archivos, que las bibliotecas de autenticación usan para adquirir un token. Cuando aceptes configuraciones de credenciales de una fuente externa, debes validar la configuración antes de usarla. Si no valida la configuración, un agente malintencionado podría usar la credencial para poner en peligro sus sistemas y datos.
Validar las configuraciones de credenciales de fuentes externas
La forma en que debes validar tus credenciales externas depende de los tipos de credenciales que acepte tu aplicación.
Validar claves de cuenta de servicio
Si tu aplicación solo acepta claves de cuenta de servicio, usa un cargador de credenciales específico para claves de cuenta de servicio, como se muestra en los siguientes ejemplos. El cargador de credenciales específico del tipo solo analiza los campos presentes en las claves de cuentas de servicio, que no exponen ninguna vulnerabilidad.
Si no puedes usar un cargador de credenciales específico de un tipo, valida la credencial
confirmando que el valor del campo type es service_account. Si el valor del campo type es otro, no uses la clave de la cuenta de servicio.
En la siguiente tabla se indican los campos que debe validar, si están presentes en sus credenciales. No todos estos campos están presentes en todas las configuraciones de credenciales.
Campo
Finalidad
Valor previsto
service_account_impersonation_url
Las bibliotecas de autenticación usan este campo para acceder a un endpoint y generar un token de acceso para la cuenta de servicio cuya identidad se está suplantando.
Las bibliotecas de autenticación envían un token externo a este endpoint para
intercambiarlo por un
token de acceso federado.
https://sts.s3nsapis.fr/v1/token
credential_source.file
Las bibliotecas de autenticación leen un token externo del archivo ubicado en la
ubicación especificada en este campo y lo envían al endpoint de
token_url.
Ruta de un archivo que contiene un token externo. Deberías
reconocer esta ruta.
credential_source.url
Un endpoint que devuelve un token externo. Las bibliotecas de autenticación envían una solicitud a esta URL y envían la respuesta al endpoint token_url.
Uno de los siguientes elementos:
Un endpoint conocido proporcionado por tu proveedor de servicios en la nube.
Un endpoint que has configurado explícitamente para proporcionar tokens.
credential_source.executable.command
Si la variable de entorno GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
tiene el valor 1, las bibliotecas de autenticación
ejecutan este comando o archivo ejecutable.
Un archivo ejecutable o un comando que devuelve un token externo.
Deberías reconocer este comando y validar que es seguro.
credential_source.aws.url
Las bibliotecas de autenticación envían una solicitud a esta URL para obtener un token de seguridad de AWS.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Me falta la información que necesito","missingTheInformationINeed","thumb-down"],["Es demasiado complicado o hay demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Está obsoleto","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema de muestras o código","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-23 (UTC)."],[],[],null,[]]