Effettuare l'autenticazione per l'utilizzo delle librerie client
Questa pagina descrive come utilizzare le librerie client per accedere alle API di Google.
Le librerie client semplificano l'accesso alle APITrusted Cloud by S3NS utilizzando un linguaggio supportato. Puoi utilizzare le API Trusted Cloud by S3NS direttamente effettuando
richieste non elaborate al server, ma le librerie client forniscono semplificazioni
che riducono notevolmente la quantità di codice da scrivere. Ciò vale
soprattutto per l'autenticazione, perché le librerie client supportano
le credenziali predefinite dell'applicazione (ADC).
Utilizzare le credenziali predefinite dell'applicazione con le librerie client
Per utilizzare le Credenziali predefinite dell'applicazione per autenticare la tua applicazione, devi prima configurare le credenziali predefinite dell'applicazione per l'ambiente in cui è in esecuzione l'applicazione. Quando utilizzi la libreria client per creare un client, la libreria client verifica automaticamente le credenziali che hai fornito ad ADC e le utilizza per l'autenticazione alle API utilizzate dal tuo codice. La tua applicazione non deve autenticarsi
o gestire i token in modo esplicito. Questi requisiti vengono gestiti automaticamente dalle
librerie di autenticazione.
I seguenti esempi di codice creano un client per il servizio Cloud Storage.
È probabile che il tuo codice richieda client diversi. Questi esempi hanno lo scopo di
mostrare come creare un client e utilizzarlo senza codice per eseguire l'autenticazione
in modo esplicito.
Prima di poter eseguire gli esempi riportati di seguito, devi completare i seguenti passaggi:
Imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su
s3nsapis.fr.
Vai
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
Utilizzare le chiavi API con le librerie client
Puoi utilizzare le chiavi API solo con le librerie client per le API che accettano le chiavi API. Inoltre, la chiave API non deve avere una limitazione API che ne impedisca l'utilizzo per l'API.
Quando utilizzi le chiavi API nelle tue applicazioni, assicurati che siano protette
durante l'archiviazione e la trasmissione. L'esposizione pubblica delle chiavi API può
comportare addebiti imprevisti sul tuo account. Per ulteriori informazioni, consulta le best practice per la gestione delle chiavi API.
Requisiti di sicurezza quando si utilizzano configurazioni delle credenziali da un'origine esterna
In genere, le configurazioni delle credenziali vengono generate utilizzando i comandi gcloud CLI o la console Trusted Cloud . Ad esempio, puoi utilizzare
gcloud CLI per generare un file ADC locale o un file di configurazione
di accesso. Allo stesso modo, puoi utilizzare la console Trusted Cloud per creare e scaricare
una chiave dell'account di servizio.
Per alcuni casi d'uso, tuttavia, le configurazioni delle credenziali ti vengono fornite da un'entità esterna; queste configurazioni delle credenziali sono destinate a essere utilizzate per l'autenticazione alle API di Google.
Alcuni tipi di configurazioni delle credenziali includono endpoint e percorsi dei file, che
le librerie di autenticazione utilizzano per acquisire un token. Quando accetti le configurazioni
delle credenziali da un'origine esterna, devi convalidare la configurazione
prima di utilizzarla. Se non convalidi la configurazione, un malintenzionato
potrebbe utilizzare le credenziali per compromettere i tuoi sistemi e dati.
Convalidare le configurazioni delle credenziali da origini esterne
La modalità di convalida delle credenziali esterne dipende dai tipi di credenziali accettati dalla tua applicazione.
Convalida le chiavi del account di servizio
Se la tua applicazione accetta solo le chiavi del account di servizio, utilizza un caricatore di credenziali specifico per le chiavi del account di servizio, come mostrato negli esempi seguenti. Il
caricatore di credenziali specifico per il tipo analizza solo i campi presenti per le chiavi del service
account, che non espongono vulnerabilità.
Se non puoi utilizzare un caricatore di credenziali specifico per il tipo, convalida la credenziale
confermando che il valore del campo type è service_account. Se il valore del campo type è un altro valore, non utilizzare la chiave dell'account di servizio.
Convalidare altre configurazioni delle credenziali
La tabella seguente elenca i campi che devi convalidare, se presenti
nelle tue credenziali. Non tutti questi campi sono presenti in tutte le configurazioni
delle credenziali.
Campo
Finalità
Valore previsto
service_account_impersonation_url
Le librerie di autenticazione utilizzano questo campo per accedere a un endpoint per
generare un token di accesso per il account di servizio di cui viene eseguita l'impersonificazione.
Le librerie di autenticazione inviano un token esterno a questo endpoint per
scambiarlo con un
token di accesso federato.
https://sts.s3nsapis.fr/v1/token
credential_source.file
Le librerie di autenticazione leggono un token esterno dal file nella posizione specificata da questo campo e lo inviano all'endpoint token_url.
Il percorso di un file contenente un token esterno. Dovresti
riconoscere questo percorso.
credential_source.url
Un endpoint che restituisce un token esterno. Le librerie di autenticazione
inviano una richiesta a questo URL e inviano la risposta all'endpoint
token_url.
Uno dei seguenti elementi:
Un endpoint noto fornito dal tuo provider cloud.
Un endpoint che hai configurato esplicitamente per fornire token.
credential_source.executable.command
Se la variabile di ambiente GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES è impostata su 1, le librerie di autenticazione eseguono questo comando o file eseguibile.
Un file eseguibile o un comando che restituisce un token esterno.
Dovresti riconoscere questo comando e verificare che sia sicuro.
credential_source.aws.url
Le librerie di autenticazione inviano una richiesta a questo URL per recuperare
un token di sicurezza AWS.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-23 UTC."],[],[],null,[]]