Pour les applications Google Chat créées sur des points de terminaison HTTP, cette section explique comment vérifier que les requêtes adressées à votre point de terminaison proviennent de Chat.
Pour envoyer des événements d'interaction au point de terminaison de votre application Chat, Google envoie des requêtes à votre service. Pour vérifier que la requête provient de Google, Chat inclut un jeton porteur dans l'en-tête Authorization de chaque requête HTTPS adressée à votre point de terminaison. Exemple :
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
La chaîne AbCdEf123456 dans l'exemple précédent est le jeton d'autorisation porteur. Il s'agit d'un jeton cryptographique généré par Google. Le type du jeton
porteur et la valeur du champ audience dépendent du type d'audience
d'authentification que vous avez sélectionné lors
de la configuration de l'application Chat.
Si vous avez implémenté votre application Chat à l'aide de Cloud Run Functions, Cloud IAM gère automatiquement la validation des jetons. Vous devez ajouter le compte de service Google Chat en tant qu'appelant autorisé. Si votre application implémente son propre serveur HTTP, vous pouvez valider votre jeton porteur à l'aide d'une bibliothèque cliente Google API 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
Si le jeton n'est pas validé pour l'application Chat, votre service doit répondre à la requête avec un code de réponse HTTPS 401 (Unauthorized).
Authentifier les requêtes à l'aide de Cloud Run Functions
Si la logique de votre fonction est implémentée à l'aide de Cloud Run Functions, vous devez sélectionner URL du point de terminaison HTTP dans le champ Audience d'authentification du paramètre de connexion de l'application Chat et vous assurer que l' URL du point de terminaison HTTP dans la configuration correspond à l'URL du point de terminaison de la fonction Cloud Run.
Vous devez ensuite autoriser le compte de service Google Chat chat@system.gserviceaccount.com en tant qu'appelant en procédant comme suit :
Console
Après avoir déployé votre fonction ou votre service sur Google Cloud :
Dans la console Google Cloud, accédez à la page Cloud Run :
Dans la liste des services Cloud Run, cochez la case en regard de la fonction de réception. (Ne cliquez pas directement sur la fonction.)
Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.
Cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez
chat@system.gserviceaccount.com.Dans le menu Sélectionner un rôle, sélectionnez le rôle Cloud Run
Demandeur Cloud Run.
Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud functions add-invoker-policy-binding :
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'Remplacez RECEIVING_FUNCTION par le nom de la fonction de votre application Chat.
Authentifier les requêtes HTTP avec un jeton d'ID
Si le champ "Audience d'authentification" du paramètre de connexion de l'application Chat
est défini sur
URL du point de terminaison HTTP,
le jeton d'autorisation porteur de la requête est un jeton d'ID OpenID Connect
(OIDC)
signé par Google.
Le champ email est défini sur chat@system.gserviceaccount.com. Le champ Audience d'authentification est défini sur l'URL que vous avez configurée pour que Google Chat envoie des requêtes à votre application Chat. Par exemple, si le point de terminaison configuré de votre application Chat est https://example.com/app/, le champ Audience d'authentification du jeton d'ID est https://example.com/app/.
Il s'agit de la méthode d'authentification recommandée si votre point de terminaison HTTP n'est pas hébergé sur un service compatible avec l'authentification basée sur IAM (comme Cloud Run). Avec cette méthode, votre service HTTP a besoin d'informations sur l'URL du point de terminaison où il s'exécute, mais pas sur le numéro de projet Cloud.
Les exemples suivants montrent comment vérifier que le jeton porteur a été émis par Google Chat et ciblé sur votre application à l'aide de la bibliothèque cliente Google OAuth.
Java
Python
Node.js
Authentifier les requêtes avec un jeton JWT de numéro de projet
Si le champ "Audience d'authentification" du paramètre de connexion de l'application Chat
est défini sur Project
Number, le jeton d'autorisation porteur de la requête est un jeton Web JSON (JWT) autosigné
,
émis et signé par chat@system.gserviceaccount.com.
Le champ audience est défini sur le numéro de projet Google Cloud que vous avez utilisé pour créer votre application Chat. Par exemple, si le numéro de projet Cloud de votre application Chat est 1234567890, le champ audience du JWT est 1234567890.
Cette méthode d'authentification n'est recommandée que si vous préférez utiliser le numéro de projet Cloud pour vérifier les requêtes au lieu de l'URL du point de terminaison HTTP. Par exemple, si vous souhaitez modifier l'URL du point de terminaison au fil du temps tout en conservant le même numéro de projet Cloud, ou si vous souhaitez utiliser le même point de terminaison pour plusieurs numéros de projet Cloud et comparer le champ audience avec une liste de numéros de projet Cloud.
Les exemples suivants montrent comment vérifier que le jeton porteur a été émis par Google Chat et ciblé sur votre projet à l'aide de la bibliothèque cliente Google OAuth.
Java
Python
Node.js
Articles associés
- Pour une présentation de l'authentification et de l'autorisation dans Google Workspace, consultez En savoir plus sur l'authentification et l'autorisation.
- Pour une présentation de l'authentification et de l'autorisation dans Chat, voir Présentation de l'authentification.
- Configurez l'authentification et l'autorisation avec des identifiants utilisateur ou un compte de service.