Tipi di token

Questa pagina illustra i tipi di token utilizzati per l'autenticazione sulle API di Google, Servizi Google Cloud e servizi creati dal cliente ospitati su Google Cloud.

Se accedi alle API e ai servizi Google utilizzando una libreria client, puoi configurare le 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 è autorizzata. Nella maggior parte dei flussi di autenticazione, un'applicazione (o una libreria usata dall'applicazione) scambia una la credenziale per un token, che determina a quali risorse autorizzato ad accedere.

Tipi di token

Vengono utilizzati tipi di token diversi in ambienti diversi. Le seguenti i tipi di token sono descritti in questa pagina:

Questa pagina non tratta le chiavi API o gli ID client, che sono considerati credenziali.

Token di accesso

I token di accesso sono token opachi conformi al framework OAuth 2.0. Contengono le autorizzazioni ma non informazioni sull'identità. Vengono utilizzati per autenticare e fornire informazioni di autorizzazione alle API di Google.

Se utilizzi le credenziali predefinite dell'applicazione (ADC) e le librerie client Cloud o le librerie client delle API di Google, non è necessario gestire i token di accesso. Le librerie recuperano automaticamente la credenziale, la scambiano con un token di accesso e lo aggiornano in base alle esigenze.

Accedi ai contenuti del token

I token di accesso sono token opachi, il che significa che si trovano in un formato; le applicazioni non possono controllarli.

Puoi ottenere le informazioni da un token di accesso valido (non scaduto o revocato) utilizzando OAuth 2.0 di Google Endpoint tokeninfo.

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 qualcosa di simile al seguente esempio:

{
  "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 tabella seguente elenca i campi più importanti da comprendere:

Campo Descrizione
azp L'ID progetto, email o account di servizio dell'applicazione che ha richiesto il token. Questo valore viene 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, è buona prassi 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 un controllo granulare dell'accesso.
expires_in Il numero di secondi che mancano alla scadenza del token. Per ulteriori informazioni, vedi Durata del token di accesso.

Durata del token di accesso

Per impostazione predefinita, i token di accesso sono validi per 1 ora (3600 secondi). Quando il token di accesso è scaduto, il codice di gestione dei token deve ottenerne uno nuovo.

Se hai bisogno di un token di accesso con una durata maggiore o minore, puoi utilizzare il metodo serviceAccounts.generateAccessToken per crearlo. Questo metodo ti consente di scegliere la durata 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. Per ulteriori informazioni, vedi Creare un token di accesso di breve durata.

Token ID

I token di identità sono token web JSON (JWT) 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 sono destinati a essere ispezionati e utilizzati dall'applicazione. Le informazioni del token, ad esempio chi lo ha firmato o l'identità per cui è stato emesso, sono disponibili per l'utilizzo da parte dell'applicazione.

Per ulteriori informazioni sull'implementazione di OIDC da parte di Google, consulta OpenID Connect. Per le best practice per l'uso dei JWT, vedi Best practice correnti per i token web JSON.

Contenuti token ID

Puoi ispezionare 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, è https://accounts.google.com.
azp Facoltativo. A chi è stato emesso il token.
aud Il pubblico del token. Il valore di questa dichiarazione deve corrispondere un'applicazione o un servizio che utilizza il token per autenticare la richiesta. Per ulteriori informazioni, vedi Rivendicazione del token ID aud.
sub L'oggetto: l'ID che rappresenta l'entità che effettua la richiesta.
iat Tempo Unix epoch quando è stato emesso il token.
exp Tempo di epocha Unix alla scadenza del token.

Potrebbero essere presenti altri diritti, a seconda dell'emittente e dell'applicazione.

Richiesta di token ID aud

L'affermazione aud descrive il nome del servizio per cui è stato creato il token. Se un servizio riceve un token ID, deve verificarne l'integrità (firma), (è scaduta) e se la rivendicazione aud corrisponde al nome previsto. In caso di mancata corrispondenza, il servizio deve rifiutare il token, in quanto potrebbe trattarsi di un replay destinato 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, funzioni di Cloud Run o Identity-Aware Proxy, Google convalida l'ID di token per te; in questi casi, i token ID devono essere firmati da Google.

Se devi convalidare gli ID token all'interno della tua 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.

La creazione di JWT autofirmati è consigliata se crei le tue librerie client per accedere alle API di Google, ma si tratta di un flusso di lavoro avanzato. Per ulteriori informazioni sui token JWT autofirmati, consulta Creare un token web JSON autofirmato. Per le best practice per l'uso dei JWT, vedi Best practice correnti per i token web JSON.

Token di aggiornamento

L'IdP gestisce la durata dei token di lunga durata. Un'eccezione è file ADC locali, contenenti i token di aggiornamento usati dall'autenticazione per aggiornare automaticamente i token di accesso per le librerie client.

Token federati

I token federati vengono usati come passaggio intermedio Federazione delle identità per i carichi di lavoro. I token federati vengono restituiti Security Token Service e non può essere utilizzato direttamente. Devono essere ha scambiato un token di accesso utilizzando l'account di servizio il furto d'identità.

Token di accesso

I token di accesso 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 bearer.

L'utilizzo di token di accesso per l'autenticazione si basa sulla sicurezza fornita da un protocollo criptato, come HTTPS. Se un token di accesso viene intercettato, può essere utilizzato da un malintenzionato per ottenere l'accesso.

Se i token bearer non forniscono una sicurezza sufficiente per il tuo caso d'uso, valuta la possibilità di aggiungere un altro livello di crittografia o di utilizzare una soluzione Transport Layer Security (mTLS) mutuale come Chrome Enterprise Premium, che limita l'accesso solo agli utenti autenticati su un dispositivo attendibile.

Passaggi successivi