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 tramite utilizzando una libreria client, puoi configurare Credenziali predefinite dell'applicazione e la libreria client e gestisce i token al posto tuo. 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, un'applicazione (o una libreria usata dall'applicazione) scambia una la credenziale per un token, che determina le risorse a cui l'applicazione 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:

In questa pagina non sono descritte le chiavi API o gli ID client, che sono considerate credenziali.

Token di accesso

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

Se usi Credenziali predefinite dell'applicazione (ADC) e librerie client di Cloud o librerie client delle API di Google, non sono necessarie per gestire i token di accesso, le librerie recuperano automaticamente le credenziali, scambialo con un token di accesso e aggiornalo 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 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 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 Google Cloud, come best practice utilizzare https://www.googleapis.com/auth/cloud-platform che include tutte le API Google Cloud, insieme Identity and Access Management (IAM), che fornisce un controllo dell'accesso granulare.
expires_in Il numero di secondi prima della 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 un'ora (3600 secondi). Quando il token di accesso scaduto, il codice di gestione token deve riceverne uno nuovo.

Se ti serve un token di accesso con una durata più lunga o più breve, puoi utilizzare Metodo serviceAccounts.generateAccessToken per creare il token. 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 dell'organizzazione che abilita Vincolo iam.allowServiceAccountCredentialLifetimeExtension. Non puoi creare token di accesso con una durata estesa per le credenziali utente o identità esterne. Per ulteriori informazioni, vedi Creare un token di accesso di breve durata.

Token ID

I token ID sono JWT (Web Token) JSON conformi alle la specifica OpenID Connect (OIDC). Sono ed è composta da un insieme di coppie chiave/valore chiamate claim

A differenza dei token di accesso, che sono oggetti opachi che non possono essere ispezionati i token ID devono essere ispezionati e utilizzati dall'applicazione. Informazioni del token, ad esempio Chi ha firmato il token o l'identità di il token ID può essere utilizzato dall'applicazione.

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

Contenuti token ID

Puoi controllare un token ID valido (non scaduto o revocato) utilizzando la proprietà 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 inviato 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 Ora dell'epoca Unix quando è stato emesso il token.
exp Ora dell'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), (è scaduta) 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 da un account di servizio anziché da 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 l'ID di token per te; in questi casi, i token ID devono essere firmati da Google.

Se hai bisogno di convalidare i token ID all'interno dell'applicazione, puoi farlo anche se si tratta di un flusso di lavoro avanzato. Per informazioni, vedi 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 il tuo client librerie per accedere alle API di Google, ma è un flusso di lavoro avanzato. Per ulteriori informazioni informazioni sui JWT autofirmati, consulta Creazione di un token web JSON autofirmato. Per le best practice per l'uso dei JWT, vedi Best practice correnti per i token web JSON.

Aggiorna token

L'IdP gestisce la durata dei token di lunga durata. Un'eccezione è file ADC locali, contenenti i token di aggiornamento utilizzati 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 connessione

I token di connessione sono una classe generale di token che concede l'accesso al in possesso del token. Token di accesso, token ID e JWT autofirmati sono tutti token di connessione.

L'utilizzo dei token di connessione per l'autenticazione si basa sulla sicurezza fornita Un protocollo criptato, ad esempio HTTPS. se un token di connessione viene intercettato, può può essere usato da un utente malintenzionato per ottenere l'accesso.

Se i token di connessione non forniscono una sicurezza sufficiente per il tuo caso d'uso, valuta aggiungendo un altro livello di crittografia o utilizzando un protocollo Transport Layer Security reciproca soluzione (mTLS), come Chrome Enterprise Premium, che limita l'accesso solo utenti autenticati su un dispositivo attendibile.

Passaggi successivi