Questa pagina illustra i tipi di token utilizzati per l'autenticazione nelle API di Google, nei servizi Google Cloud e nei servizi creati dal cliente ospitati su Google Cloud.
Se accedi alle API e ai servizi Google utilizzando una libreria client, puoi configurare Credenziali predefinite dell'applicazione e la libreria client gestirà i token per te. Questo è l'approccio consigliato.
Che cosa sono i token
Per l'autenticazione e l'autorizzazione, un token è un oggetto digitale che contiene informazioni sull'identità dell'entità che effettua la richiesta e sul tipo di accesso per cui sono autorizzati. Nella maggior parte dei flussi di autenticazione, l'applicazione (o una libreria utilizzata dall'applicazione) scambia una credenziale per un token, che determina le risorse a cui l'applicazione è autorizzata ad accedere.
Tipi di token
Vengono utilizzati tipi di token diversi in ambienti diversi. In questa pagina sono descritti i seguenti tipi di token:
- Token di accesso
- Token ID
- JWT autofirmati
- Token di aggiornamento
- Token federati
- Token di connessione
Token di accesso
I token di accesso sono token opachi conformi al framework OAuth 2.0. Contengono informazioni sull'autorizzazione, ma non sull'identità. Vengono utilizzate per autenticare e fornire informazioni sull'autorizzazione alle API di Google.
Se utilizzi Credenziali predefinite dell'applicazione (ADC) e le librerie client di Cloud o le librerie client delle API di Google, non è necessario gestire i token di accesso; le librerie recuperano automaticamente la credenziale, scambiano la credenziale con un token di accesso e aggiornano il token di accesso in base alle esigenze.
Accedi ai contenuti del token
I token di accesso sono token opachi, il che significa che sono in un formato proprietario; le applicazioni non possono controllarli.
Puoi ottenere le informazioni da un token di accesso valido (non scaduto o revocato) utilizzando l'endpoint Google OAuth 2.0tokeninfo
.
Sostituisci ACCESS_TOKEN con il token di accesso valido e non scaduto.
curl "https://oauth2.googleapis.com/tokeninfo?access_token=ACCESS_TOKEN"
Questo comando restituisce una risposta simile all'esempio seguente:
{ "azp": "32553540559.apps.googleusercontent.com", "aud": "32553540559.apps.googleusercontent.com", "sub": "111260650121245072906", "scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/accounts.reauth", "exp": "1650056632", "expires_in": "3488", "email": "user@example.com", "email_verified": "true" }
La seguente tabella elenca i campi più importanti da comprendere:
Campo | Descrizione |
---|---|
azp |
Il progetto, l'email o l'ID account di servizio dell'applicazione che ha richiesto il token. Questo valore è incluso solo se
https://www.googleapis.com/auth/userinfo.email è
specificato nell'elenco degli ambiti.
|
scope |
Gli ambiti OAuth che sono stati aggiunti a questo token di accesso. Per
i servizi Google Cloud, ti consigliamo di utilizzare l'ambito
https://www.googleapis.com/auth/cloud-platform
, che include tutte le API Google Cloud, insieme a
Identity and Access Management (IAM),
che fornisce controllo dell'accesso granulare.
|
expires_in |
Il numero di secondi prima della scadenza del token. Per maggiori informazioni, consulta Durata del token di accesso. |
Durata del token di accesso
Per impostazione predefinita, i token di accesso hanno una durata di 1 ora (3600 secondi). Una volta scaduto il token di accesso, il codice di gestione dei token deve riceverne uno nuovo.
Se hai bisogno di un token di accesso con una durata più lunga o più breve, puoi utilizzare il metodo serviceAccounts.generateAccessToken
per crearlo. Questo metodo consente di scegliere la durata del token, con una durata massima di 12 ore.
Se vuoi estendere la durata del token oltre quella predefinita, devi creare un criterio dell'organizzazione che attivi il vincolo iam.allowServiceAccountCredentialLifetimeExtension
.
Non puoi creare token di accesso con una durata estesa per le credenziali utente o le identità esterne. Per maggiori informazioni, consulta
Creare un token di accesso di breve durata.
Token ID
I token ID sono JWT (token web JSON) conformi alla specifica OpenID Connect (OIDC). Sono costituiti da un insieme di coppie chiave-valore chiamate claim.
A differenza dei token di accesso, che sono oggetti opachi che non possono essere ispezionati dall'applicazione, i token ID devono essere ispezionati e utilizzati dall'applicazione. L'applicazione può utilizzare le informazioni del token, come chi ha firmato il token o l'identità di chi è stato emesso.
Per maggiori informazioni sull'implementazione di OIDC da parte di Google, consulta OpenID Connect. Per le best practice per l'utilizzo dei JWT, consulta le best practice correnti per i token web JSON.Contenuti token ID
Puoi controllare un token ID valido (non scaduto o revocato) utilizzando
l'endpoint tokeninfo
.
Sostituisci ID_TOKEN con il token ID valido e non scaduto.
curl "https://oauth2.googleapis.com/tokeninfo?id_token=ID_TOKEN"
Questo comando restituisce una risposta simile all'esempio seguente:
{ "iss": "https://accounts.google.com", "azp": "32555350559.apps.googleusercontent.com", "aud": "32555350559.apps.googleusercontent.com", "sub": "111260650121185072906", "hd": "google.com", "email": "user@example.com", "email_verified": "true", "at_hash": "_LLKKivfvfme9eoQ3WcMIg", "iat": "1650053185", "exp": "1650056785", "alg": "RS256", "kid": "f1338ca26835863f671403941738a7b49e740fc0", "typ": "JWT" }
La seguente tabella descrive le rivendicazioni dei token ID richieste o comunemente utilizzate:
Richiedi | Descrizione |
---|---|
iss |
L'emittente, o firmatario, del token. Per i token ID firmati da Google, questo valore è https://accounts.google.com .
|
azp |
Facoltativo. A chi è stato inviato il token. |
aud |
Il pubblico del token. Il valore di questa dichiarazione deve corrispondere all'applicazione o al servizio che utilizza il token per autenticare la richiesta.
Per maggiori informazioni, consulta
Rivendicazione del token ID aud .
|
sub |
L'oggetto: l'ID che rappresenta l'entità che effettua la richiesta. |
iat |
Ora di epoca Unix in cui è stato emesso il token. |
exp |
Ora di epoca Unix alla scadenza del token. |
Potrebbero essere presenti altre rivendicazioni, a seconda dell'emittente e della richiesta.
Richiesta di token ID aud
L'attestazione aud
descrive il nome del servizio che questo token è stato creato per richiamare.
Se un servizio riceve un token ID, deve verificarne l'integrità (firma), la validità (è scaduto) e se la rivendicazione aud
corrisponde al nome previsto.
Se non corrisponde, il servizio dovrebbe rifiutare il token, perché potrebbe essere una replica destinata a un altro sistema.
In genere, quando ricevi un token ID, utilizzi le credenziali
fornite da un account di servizio, anziché le credenziali utente. Questo perché l'attestazione aud
per i token ID generati utilizzando le credenziali utente è legata in modo statico all'applicazione utilizzata dall'utente per l'autenticazione. Quando utilizzi un account di servizio
per acquisire un token ID, puoi specificare un valore diverso per la richiesta aud
.
Durata del token ID
I token ID sono validi per un massimo di 1 ora (3600 secondi). Quando un token ID scade, devi acquisirne uno nuovo.
Convalida token ID
Quando il tuo servizio o la tua applicazione utilizza un servizio Google come Cloud Run, Cloud Functions o Identity-Aware Proxy, Google convalida i token ID per te; in questi casi, i token ID devono essere firmati da Google.
Se devi convalidare i token ID all'interno dell'applicazione, puoi farlo, anche se si tratta di un flusso di lavoro avanzato. Per informazioni, consulta Convalida di un token ID.
JWT (JSON Web Token) autofirmati
Puoi utilizzare JWT autofirmati per l'autenticazione su alcune API di Google senza dover ottenere un token di accesso dal server di autorizzazione.Ti consigliamo di creare JWT autofirmati se stai creando le tue librerie client per accedere alle API di Google, ma si tratta di un flusso di lavoro avanzato. Per ulteriori informazioni sui JWT autofirmati, consulta Creazione di un token web JSON autofirmato. Per le best practice per l'utilizzo dei JWT, consulta le best practice correnti per i token web JSON.
Aggiorna token
L'IdP gestisce la durata dei token di lunga durata. Un'eccezione sono i file ADC locali, che contengono token di aggiornamento utilizzati dalle librerie di autenticazione per aggiornare automaticamente i token di accesso per le librerie client.
Token federati
I token federati vengono utilizzati come passaggio intermedio dalla Federazione delle identità per i carichi di lavoro. I token federati vengono restituiti dal servizio token di sicurezza e non possono essere utilizzati direttamente. Devono essere scambiati con un token di accesso utilizzando la simulazione dell'identità degli account di servizio.
Token di connessione
I token di connessione sono una classe generale di token che concede l'accesso alla parte in possesso del token. I token di accesso, i token ID e i JWT autofirmati sono tutti token di connessione.
L'utilizzo dei token di connessione per l'autenticazione si basa sulla sicurezza fornita da un protocollo criptato, ad esempio HTTPS
; se un token di connessione viene intercettato, può essere utilizzato da un utente malintenzionato per ottenere l'accesso.
Passaggi successivi
- Scopri come configurare le credenziali per ADC.
- Leggi le informazioni su come ottenere i token ID.
- Scopri di più sui metodi di autenticazione.