Questa pagina descrive alcuni modi per acquisire un token ID OpenID Connect (OIDC) firmato da Google.
Per informazioni sui contenuti e sulla durata dei token ID, consulta la sezione Token ID.
I token ID hanno un servizio o un'applicazione specifici per cui possono essere utilizzati,
specificati dal valore della rivendicazione aud. Questo documento utilizza il termine
servizio di destinazione per fare riferimento al servizio o all'applicazione per cui è possibile utilizzare il token ID
per l'autenticazione.
Quando ricevi il token ID, puoi includerlo in un'intestazione Authorization nella richiesta al servizio di destinazione.
Metodi per ottenere un token ID
Esistono vari modi per ottenere un token ID. Questa pagina descrive i seguenti metodi:
- Ottenere un token ID dal server di metadati
- Utilizza un servizio di connessione per generare un token ID
- Generare un token ID rappresentando un service account
Se hai bisogno che un token ID venga accettato da un'applicazione non ospitata su Google Cloud, puoi probabilmente utilizzare questi metodi. Tuttavia, devi determinare quali rivendicazioni del token ID richiede l'applicazione.
Ottenere un token ID dal server di metadati
Quando il codice viene eseguito su una risorsa a cui può essere collegato un service account, il server dei metadati per il servizio associato può in genere fornire un token ID. Il server dei metadati genera token ID per il account di servizio collegato. Non puoi ottenere un token ID basato sulle credenziali utente dal server dei metadati.
Puoi ottenere un token ID dal server dei metadati quando il codice viene eseguito sui seguenti servizi Google Cloud :
Per recuperare un token ID dal server dei metadati, esegui una query sull'endpoint dell'identità per ilaccount di serviziot, come mostrato in questo esempio.
curl
Sostituisci AUDIENCE con l'URI del servizio di destinazione,
ad esempio http://www.example.com.
curl -H "Metadata-Flavor: Google" \ 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'
PowerShell
Sostituisci AUDIENCE con l'URI del servizio di destinazione,
ad esempio http://www.example.com.
$value = (Invoke-RestMethod `
-Headers @{'Metadata-Flavor' = 'Google'} `
-Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
Java
Per eseguire questo esempio di codice, devi installare la libreria client Auth per Java.
Vai
Node.js
Per eseguire questo esempio di codice, devi installare la libreria Google Auth per Node.js
Python
Per eseguire questo esempio di codice, devi installare la libreria Python di autenticazione Google.
Ruby
Per eseguire questo esempio di codice, devi installare la libreria di autenticazione Google per Ruby.
Utilizzare un servizio di connessione per generare un token ID
Alcuni Google Cloud servizi ti aiutano a chiamare altri servizi. Questi servizi di connessione
possono aiutarti a determinare quando effettuare la chiamata o a gestire un flusso di lavoro che
include la chiamata al servizio. I seguenti servizi possono includere automaticamente un token ID, con il valore appropriato per l'attestazione aud, quando avviano una chiamata a un servizio che richiede un token ID:
- Pub/Sub
- Pub/Sub consente la comunicazione asincrona tra i servizi. Puoi configurare Pub/Sub in modo che includa un token ID con un messaggio. Per saperne di più, consulta Autenticazione per la sottoscrizione push.
Genera un token ID rappresentando un account di servizio
La simulazione dell'identità del service account consente a un'entità di generare credenziali di breve durata per un account di servizio attendibile. L'entità può quindi utilizzare queste credenziali per autenticarsi comeaccount di serviziot.
Prima che un'entità possa rappresentare un account di servizio, deve disporre di un ruolo IAM su quelaccount di serviziot che consenta la rappresentazione. Se l'entità è un altro account di servizio, potrebbe sembrare più semplice fornire direttamente le autorizzazioni richieste a quel account di servizio e consentirgli di simulare la propria identità. Questa configurazione, nota come auto-impersonificazione, crea una vulnerabilità di sicurezza, perché consente alaccount di serviziont di creare un token di accesso che può essere aggiornato per sempre.
La simulazione dell'identità del service account deve sempre coinvolgere due entità: un'entità che rappresenta il chiamante e il account di servizio la cui identità viene simulata, chiamato account di servizio con privilegi.
Per generare un token ID simulando un account di servizio, utilizza la seguente procedura generale.
Per istruzioni passo passo, vedi Creare un token ID.
Identifica o crea un service account che funga da account di servizio con privilegi.
- Consulta la documentazione del prodotto per identificare i ruoli necessari per richiamare il servizio di destinazione. Concedi questi ruoli all'account di servizio nel servizio di destinazione.
Identifica l'entità che eseguirà la rappresentazione e configura le Credenziali predefinite dell'applicazione (ADC) per utilizzare le credenziali per questa entità.
Per gli ambienti di sviluppo, l'entità è in genere l'account utente che hai fornito ad ADC utilizzando gcloud CLI. Tuttavia, se esegui l'operazione su una risorsa con unaccount di serviziot collegato, il service account collegato è l'entità.
Concedi al principal il ruolo Service Account OpenID Connect Identity Token Creator (
roles/iam.serviceAccountOpenIdTokenCreator).Utilizza l'API IAM Credentials per generare il token ID per il account di servizio autorizzato.
Sostituisci quanto segue:
- AUDIENCE: l'URI del servizio di destinazione, ad esempio
http://www.example.com. - SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio con privilegi.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"audience": "AUDIENCE", "includeEmail": "true"}' \ https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken- AUDIENCE: l'URI del servizio di destinazione, ad esempio
Passaggi successivi
- Informazioni sui token ID.
- Utilizza i comandi della shell per interrogare il server di metadati di Compute Engine.
- Scopri di più sui metodi di autenticazione.