En el caso de las apps de Google Chat compiladas en extremos HTTP, en esta sección se explica cómo verificarás que las solicitudes a tu extremo provengan de Chat.
Para enviar eventos de interacción al entorno
extremo, Google realiza solicitudes a tu servicio. Para verificar que la solicitud esté
provenientes de Google, Chat incluye un
token del portador
en el encabezado Authorization
de cada solicitud HTTPS a tu extremo. Por ejemplo:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
La cadena AbCdEf123456
en el ejemplo anterior es el token de autorización del portador. Este es un token criptográfico que produce Google. El tipo de token portador y el valor del campo audience
dependen del tipo de público de autenticación que seleccionaste cuando configuraste la app de Chat.
Si implementaste la app de Chat con Cloud Functions o Cloud Run, Cloud IAM controla la verificación de tokens automáticamente. Tú solo necesito agregar la cuenta de servicio de Google Chat como un invocador autorizado. Si tu app implementa su propio servidor HTTP, puedes verificar tu token del portador Con una biblioteca cliente de la API de Google de código abierto:
- 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
Si no se verifica con el token para la app de Chat, tu
servicio debe responder a la solicitud con un código de respuesta HTTPS
401 (Unauthorized)
Autentica solicitudes con Cloud Functions o Cloud Run
Si la lógica de tu función se implementa con Cloud Functions o Cloud Run, debes seleccionar la URL de extremo HTTP en el campo Público de autenticación de la app de Chat configuración de la conexión y asegúrate de que La URL del extremo HTTP de la configuración corresponde a la URL de la Cloud Function o extremo de Cloud Run.
Luego, debes autorizar la cuenta de servicio de Google Chat
chat@system.gserviceaccount.com
como invocador
En los siguientes pasos, se muestra cómo usar Cloud Functions (1a gen.):
Console
Después de implementar la función en Google Cloud, sigue estos pasos:
En la consola de Google Cloud, ve a la página Cloud Functions.
En la lista de Cloud Functions, haz clic en la casilla de verificación junto a la función receptora. (No hagas clic en la función).
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Haz clic en Agregar principal.
En el campo Principales nuevas, ingresa
chat@system.gserviceaccount.com
.Selecciona el rol Cloud Functions > Invocador de Cloud Functions desde la El menú desplegable Selecciona un rol.
Haz clic en Guardar.
gcloud
Usa el comando gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
Reemplaza RECEIVING_FUNCTION
por el nombre de la función de tu app de chat.
En los siguientes pasos, se muestra cómo usar los servicios de Cloud Functions (2ª gen.) o Cloud Run:
Console
Después de implementar tu función o servicio en Google Cloud, haz lo siguiente:
En la consola de Google Cloud, ve a la página Cloud Run:
En la lista de servicios de Cloud Run, haz clic en la casilla de verificación junto a la función receptora. (No hagas clic en la función).
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Haz clic en Agregar principal.
En el campo Principales nuevas, ingresa
chat@system.gserviceaccount.com
.Selecciona el rol Cloud Run > Invocador de Cloud Run en el menú desplegable Seleccionar un rol.
Haz clic en Guardar.
gcloud
Usa el comando gcloud functions add-invoker-policy-binding
:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'
Reemplaza RECEIVING_FUNCTION
por el nombre de tu
función de la app de Chat.
Autentica solicitudes HTTP con un token de ID
Si el campo Authentication Audience de la configuración de conexión de la app de Chat está configurado como URL del extremo HTTP, el token de autorización del portador en la solicitud es un token de ID de OpenID Connect (OIDC) firmado por Google.
El campo email
se establece en chat@system.gserviceaccount.com
.
El campo Authentication Audience se establece en la URL que configuraste.
Google Chat para enviar solicitudes a tu app de Chat
Por ejemplo, si el extremo configurado de tu
App de Chat es https://example.com/app/
; luego, el
El campo Authentication Audience (Público de autenticación) en el token de ID es https://example.com/app/
.
En los siguientes ejemplos, se muestra cómo verificar que una entidad emisora haya emitido el token del portador Google Chat y se orienta a tu app con la biblioteca cliente de Google OAuth.
Java
Python
Node.js
Autentica solicitudes con un JWT de número de proyecto
Si el campo Authentication Audience de la app de Chat
La configuración de conexión se establece en Project
Number
, el token de autorización del portador en la solicitud es un token autofirmado
Token web JSON (JWT),
emitido y firmado por chat@system.gserviceaccount.com
.
El campo audience
se establece con el número de proyecto de Google Cloud que usaste.
para compilar tu app de Chat. Por ejemplo, si tu
El número de proyecto de Cloud de la app de Chat es
1234567890
, luego el campo audience
en el JWT es 1234567890
.
En los siguientes ejemplos, se muestra cómo verificar que una entidad emisora haya emitido el token del portador Google Chat y se orienta a tu proyecto con la biblioteca cliente de Google OAuth.
Java
Python
Node.js
Temas relacionados
- Para obtener una descripción general de la autenticación y autorización en Google Workspace, ver Obtén más información sobre la autenticación y la autorización.
- Para obtener una descripción general de la autenticación y la autorización en Chat, consulta Descripción general de la autenticación.
- Configura la autenticación y la autorización con credenciales de usuario o una cuenta de servicio.