Per le app Google Chat create su endpoint HTTP, questa sezione spiega come verificare che le richieste al tuo endpoint provengano da Chat.
Per inviare eventi di interazione all'endpoint
della tua app di chat, Google effettua richieste HTTPS al tuo servizio. Per verificare che la richiesta provenga da Google, Chat include un token ID OpenID Connect (OIDC) firmato da Google come token di connessione nell'intestazione Authorization di ogni richiesta HTTPS (e nel campo authorizationEventObject.systemIdToken del corpo della richiesta). Ad
esempio:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
La stringa AbCdEf123456 nell'esempio precedente è il token di autorizzazione
bearer. Questo token crittografico è firmato dall'account di servizio univoco per progetto della tua app Chat (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com) e il campo audience è impostato sull'URL dell'endpoint HTTP configurato per la tua app Chat durante la configurazione dell'app Chat.
Puoi copiare l'indirizzo email del service account dell'app di chat dalla sezione Impostazioni di connessione della scheda Configurazione dell'API Chat nella console Google Cloud:
Nella console Google Cloud, vai a Menu > API e servizi > API Google Chat > Configurazione:
In Funzionalità interattive > Impostazioni di connessione, copia l'indirizzo email del service account (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).
Se hai implementato la tua app Chat utilizzando Cloud Run Functions o Cloud Run, Cloud IAM gestisce automaticamente la verifica dei token quando concedi al service account dell'app Chat il ruolo Cloud Run Invoker (roles/run.invoker).
Se la tua app implementa il proprio server HTTP, puoi verificare il token bearer
utilizzando una libreria client delle API di Google open source:
- Java: https://github.com/google/google-api-java-client
- Python: https://github.com/google/google-api-python-client
- Node.js: https://github.com/google/google-api-nodejs-client
- .NET: https://github.com/google/google-api-dotnet-client
Se il token non viene verificato per l'app di Chat, il tuo
servizio deve rispondere alla richiesta con un codice di risposta HTTPS
401 (Unauthorized).
Autenticare le richieste utilizzando Cloud Run Functions
Se la logica della funzione è implementata utilizzando le funzioni Cloud Run o Cloud Run, assicurati che gli URL degli endpoint HTTP configurati in Trigger nelle impostazioni di connessione dell'app di chat corrispondano all'URL dell'endpoint della funzione Cloud Run.
Poi, autorizza il service account della tua app di chat
(service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com,
copiato dalla sezione Impostazioni di connessione della scheda
Configurazione dell'API Chat) come chiamante seguendo questi passaggi:
Console
Dopo aver eseguito il deployment della funzione o del servizio su Google Cloud:
Nella console Google Cloud, vai alla pagina Cloud Run:
Nell'elenco dei servizi Cloud Run, fai clic sulla casella di controllo accanto alla funzione ricevente. Non fare clic sulla funzione stessa.
Fai clic su Autorizzazioni nella parte superiore della schermata. Si apre il riquadro Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci l'indirizzo email del service account dell'app di chat (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).Nel menu Seleziona un ruolo, seleziona il ruolo Cloud Run.
Cloud Run Invoker.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-gsuiteaddons.iam.gserviceaccount.com'Sostituisci quanto segue:
RECEIVING_FUNCTION: il nome della funzione della tua app di chat.PROJECT_NUMBER: il numero di progetto dell'indirizzo email del service account dell'app Chat.
Autenticare le richieste HTTP con un token ID
Per gli endpoint HTTP, il token di autorizzazione bearer nella richiesta è un
token ID OpenID Connect (OIDC)
firmato da Google.
Il campo email è impostato sull'indirizzo email dell'account di servizio dell'app di chat
(service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com),
mentre il campo audience è impostato sull'URL dell'endpoint HTTP configurato per ricevere
la richiesta. Ad esempio, se l'endpoint configurato della tua
app Chat è https://example.com/app/, il
campo audience nel token ID è https://example.com/app/.
Questo è il metodo di autenticazione consigliato se l'endpoint HTTP non è ospitato su un servizio che supporta l'autenticazione basata su IAM (come Cloud Run).
I seguenti esempi mostrano come verificare che il token di tipo bearer sia stato emesso da Google per la tua app Chat e indirizzato all'endpoint della tua app utilizzando la libreria client Google OAuth:
Java
Python
Node.js
Argomenti correlati
- Per una panoramica dell'autenticazione e dell'autorizzazione in Google Workspace, vedi Informazioni su autenticazione e autorizzazione.
- Per una panoramica dell'autenticazione e dell'autorizzazione in Chat, vedi Panoramica dell'autenticazione.
- Configura l'autenticazione e l'autorizzazione con le credenziali utente o un service account.
App di chat che non sono componenti aggiuntivi: verifica le richieste di Google Chat
La seguente documentazione si applica alle app di chat che non sono componenti aggiuntivi di Google Workspace. Per eseguire la migrazione di un'app di Chat che non è un componente aggiuntivo, vedi Convertire un'app Google Chat in un componente aggiuntivo di Google Workspace.
Per le app Chat che non sono componenti aggiuntivi configurati con
URL endpoint HTTP in Impostazioni di connessione, il tipo di token
di connessione e il valore del campo audience dipendono dal tipo di
Pubblico di autenticazione selezionato durante la
configurazione dell'app Chat e le richieste sono firmate dal service account condiviso
chat@system.gserviceaccount.com.
Autenticare le richieste utilizzando Cloud Run Functions (app di chat che non sono componenti aggiuntivi)
Se la logica della funzione è implementata utilizzando le funzioni Cloud Run, devi selezionare URL dell'endpoint HTTP nel campo Pubblico di autenticazione dell'impostazione di connessione dell'app Chat e assicurarti che l'URL dell'endpoint HTTP nella configurazione corrisponda all'URL dell'endpoint della funzione Cloud Run.
Dopodiché, devi autorizzare il service account Google Chat
chat@system.gserviceaccount.com come chiamante seguendo questi passaggi:
Console
Dopo aver eseguito il deployment della funzione o del servizio su Google Cloud:
Nella console Google Cloud, vai alla pagina Cloud Run:
Nell'elenco dei servizi Cloud Run, fai clic sulla casella di controllo accanto alla funzione ricevente. Non fare clic sulla funzione stessa.
Fai clic su Autorizzazioni nella parte superiore della schermata. Si apre il riquadro Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci
chat@system.gserviceaccount.com.Nel menu Seleziona un ruolo, seleziona il ruolo Cloud Run.
Cloud Run Invoker.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'Sostituisci RECEIVING_FUNCTION con il nome della funzione
dell'app di chat.
Autenticare le richieste HTTP con un token ID (app di Chat che non sono componenti aggiuntivi)
Se il campo Authentication Audience dell'impostazione di connessione dell'app Chat che non è un componente aggiuntivo è impostato su URL endpoint HTTP, il token di autorizzazione bearer nella richiesta è un token ID OpenID Connect (OIDC) firmato da Google.
Il campo email è impostato su chat@system.gserviceaccount.com. Il campo
Pubblico di autenticazione è impostato sull'URL che hai configurato in Google Chat
per inviare richieste alla tua app di Chat che non è un
componente aggiuntivo. Ad esempio, se l'endpoint configurato della tua
app di chat è https://example.com/app/, il campo
Pubblico di autenticazione nel token ID è https://example.com/app/.
I seguenti esempi mostrano come verificare che il token di connessione sia stato emesso da Google Chat e indirizzato alla tua app di Chat che non è un componente aggiuntivo utilizzando la libreria client Google OAuth.
Java
Python
Node.js
Autenticare le richieste con un JWT del numero di progetto (app Chat che non sono componenti aggiuntivi)
Se il campo Authentication Audience (Pubblico autenticazione) dell'impostazione di connessione dell'app di chat che non è un componente aggiuntivo è impostato su Project
Number, il token di autorizzazione bearer nella richiesta è un token web JSON (JWT) autofirmato, emesso e firmato da chat@system.gserviceaccount.com.
Il campo audience è impostato sul numero di progetto Google Cloud che hai utilizzato
per creare l'app Chat che non è un
componente aggiuntivo. Ad esempio, se il numero del progetto Cloud della tua app Chat è 1234567890, il campo audience nel JWT è 1234567890.
I seguenti esempi mostrano come verificare che il token bearer sia stato emesso da Google Chat e indirizzato al tuo progetto utilizzando la libreria client Google OAuth.