Para apps do Google Chat criados em endpoints HTTP, esta seção explica como verificar se as solicitações para o endpoint vêm do Chat.
Para enviar eventos de interação ao endpoint do
app Chat, o Google faz solicitações ao seu serviço. Para verificar se a solicitação
vem do Google, o Chat inclui um
token de portador
no cabeçalho Authorization
de cada solicitação HTTPS para o endpoint. Por
exemplo:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
A string AbCdEf123456
no exemplo anterior é o token de autorização de portador. É um token criptográfico produzido pelo Google. O tipo de token
de portador e o valor do campo
audience
dependem do tipo de público-alvo de autenticação que você selecionou ao
configurar o app Chat.
Se você implementou seu app do Chat usando o Cloud Functions ou o Cloud Run, o Cloud IAM processa a verificação de token automaticamente. Basta adicionar a conta de serviço do Google Chat como um invocador autorizado. Se o app implementar o próprio servidor HTTP, será possível verificar o token de portador usando uma biblioteca de cliente da API do Google de código aberto:
- 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 o token não for verificado para o app Chat, seu
serviço precisará responder à solicitação com um código de resposta HTTPS
401 (Unauthorized)
.
Autenticação de solicitações usando o Cloud Functions ou o Cloud Run
Se a lógica da função for implementada usando o Cloud Functions ou o Cloud Run, selecione URL do endpoint HTTP no campo Público-alvo de autenticação da configuração de conexão do app Chat e verifique se o URL do endpoint HTTP na configuração corresponde ao URL do endpoint do Cloud Functions ou do Cloud Run.
Em seguida, é necessário autorizar a conta de serviço chat@system.gserviceaccount.com
do Google Chat como um invocador.
As etapas a seguir mostram como usar o Cloud Functions (1ª geração):
Console
Depois de implantar a função no Google Cloud:
No console do Google Cloud, acesse a página Cloud Functions:
Na lista do Cloud Functions, clique na caixa de seleção ao lado da função de recebimento. (Não clique na função em si.)
Clique em Permissões na parte superior da tela. O painel Permissões é aberto.
Clique em Adicionar principal.
No campo Novos participantes, insira
chat@system.gserviceaccount.com
.Selecione o papel Cloud Functions > Chamador do Cloud Functions no menu suspenso Selecionar um papel.
Clique em Salvar.
gcloud
Use o 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'
Substitua RECEIVING_FUNCTION
pelo nome da
função do app de chat.
As etapas a seguir mostram como usar os serviços do Cloud Functions (2ª geração) ou do Cloud Run:
Console
Depois de implantar a função ou o serviço no Google Cloud:
No console do Google Cloud, acesse a página do Cloud Run:
Na lista de serviços do Cloud Run, clique na caixa de seleção ao lado da função de recebimento. (Não clique na função em si.)
Clique em Permissões na parte superior da tela. O painel Permissões é aberto.
Clique em Adicionar principal.
No campo Novos participantes, insira
chat@system.gserviceaccount.com
.Selecione o papel Cloud Run > Chamador do Cloud Run no menu suspenso Selecionar um papel.
Clique em Salvar.
gcloud
Use o comando gcloud functions add-invoker-policy-binding
:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'
Substitua RECEIVING_FUNCTION
pelo nome da
função do app de chat.
Autentique solicitações HTTP com um token de ID
Se o campo "Público-alvo de autenticação" da configuração de conexão do app Chat estiver definido como
URL do endpoint HTTP,
o token de autorização de portador na solicitação será um token de ID do OpenID Connect
(OIDC) assinado pelo Google.
O campo email
está definido como chat@system.gserviceaccount.com
.
O campo Público-alvo de autenticação é definido como o URL que você configurou
no Google Chat para enviar solicitações ao seu app do Chat.
Por exemplo, se o endpoint configurado do seu
app do Chat for https://example.com/app/
, o campo
Público-alvo de autenticação no token de ID será https://example.com/app/
.
Esse é o método de autenticação recomendado se o endpoint HTTP não estiver hospedado em um serviço compatível com a autenticação baseada no IAM, como o Cloud Functions ou o Cloud Run. Com esse método, seu serviço HTTP precisa de informações sobre o URL do endpoint em que ele está sendo executado, mas não precisa de informações sobre o número do projeto do Cloud.
Os exemplos a seguir mostram como verificar se o token de portador foi emitido pelo Google Chat e direcionado ao seu app usando a biblioteca de cliente OAuth do Google.
Java
Python
Node.js
Autenticação de solicitações com um JWT de número de projeto
Se o campo "Authentication Audience" da configuração de conexão do app Chat estiver definido como Project
Number
, o token de autorização de portador na solicitação será um Token da Web JSON (JWT) autoassinado, emitido e assinado por chat@system.gserviceaccount.com
.
O campo audience
é definido como o número do projeto do Google Cloud usado
para criar o app Chat. Por exemplo, se o
número do projeto do Cloud do app Chat for
1234567890
, o campo audience
no JWT será 1234567890
.
Esse método de autenticação só é recomendado se você preferir usar o
número do projeto do Cloud para verificar solicitações em vez do URL do endpoint
HTTP. Por exemplo, se você quiser mudar o URL do endpoint ao longo do tempo, mantendo o mesmo número de projeto do Cloud, ou se quiser usar o mesmo endpoint para vários números de projeto do Cloud e comparar o campo audience
com uma lista de números de projeto do Cloud.
Os exemplos a seguir mostram como verificar se o token de portador foi emitido pelo Google Chat e direcionado ao seu projeto usando a biblioteca de cliente OAuth do Google.
Java
Python
Node.js
Temas relacionados
- Para ter uma visão geral da autenticação e autorização no Google Workspace, consulte Saiba mais sobre autenticação e autorização.
- Para ter uma visão geral da autenticação e autorização no Chat, consulte Visão geral da autenticação.
- Configure a autenticação e a autorização com credenciais do usuário ou uma conta de serviço.