Para apps do Google Chat criados em endpoints HTTP, esta seção explica como verificar se as solicitações ao endpoint vêm do Chat.
Para enviar eventos de interação ao endpoint do app do Chat, o Google faz solicitações ao seu serviço. Para verificar se a solicitação está
vindo do Google, o Chat inclui um
token de autorização
no cabeçalho Authorization de cada solicitação HTTPS ao seu 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. Esse é um token criptográfico produzido pelo Google. O tipo de token de autorização e o valor do campo audience dependem do tipo de público de autenticação selecionado ao configurar o app do Chat.
Se você implementou o app do Chat usando o Cloud Run functions, o Cloud IAM processa a verificação de token automaticamente. É necessário adicionar a conta de serviço do Google Chat como um invocador autorizado. Se o app implementa o próprio servidor HTTP, é possível verificar o token de autorização 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 do Chat, o serviço deverá responder à solicitação com um código de resposta HTTPS 401 (Unauthorized).
Autenticar solicitações usando o Cloud Run functions
Se a lógica da função for implementada usando o Cloud Run functions, você deve selecionar URL do endpoint HTTP no campo Público de autenticação da configuração de conexão do app do Chat e verificar se a URL do endpoint HTTP na configuração corresponde à URL do endpoint da função do Cloud Run.
Em seguida, autorize a conta de serviço do Google Chat chat@system.gserviceaccount.com como um invocador seguindo estas etapas:
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.No menu Selecionar um papel, escolha o papel Cloud Run
Chamador do Cloud Run.
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 do Chat.
Autenticar solicitações HTTP com um token de ID
Se o campo Público de autenticação da configuração de conexão do app do 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 de autenticação está definido como a URL que você configurou para o Google Chat enviar solicitações ao app do Chat. Por exemplo, se o endpoint configurado do app do Chat for https://example.com/app/, o campo Público 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 que ofereça suporte à autenticação baseada no IAM, como o Cloud Run. Usando esse método, o serviço HTTP precisa de informações sobre a URL do endpoint em que está em execução, mas não precisa de informações sobre o número do projeto na nuvem.
Os exemplos a seguir mostram como verificar se o token do portador foi emitido pelo Google Chat e direcionado ao seu app usando a biblioteca de cliente do Google OAuth.
Java
Python
Node.js
Autenticar solicitações com um JWT de número do projeto
Se o campo Público de autenticação da configuração de conexão do app do Chat
estiver definido como Project
Number, o token de autorização de portador na solicitação será um
JSON Web Token (JWT) autoassinado,
emitido e assinado por chat@system.gserviceaccount.com.
O campo audience está definido como o número do projeto na nuvem do Google Cloud que você usou para criar o app do Chat. Por exemplo, se o número do projeto na nuvem do app do 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 na nuvem para verificar solicitações em vez da URL do endpoint HTTP. Por exemplo, se você quiser mudar a URL do endpoint ao longo do tempo, mantendo o mesmo número do projeto na nuvem, ou se quiser usar o mesmo endpoint para vários números de projetos na nuvem e comparar o campo audience com uma lista de números de projetos na nuvem.
Os exemplos a seguir mostram como verificar se o token do portador foi emitido pelo Google Chat e direcionado ao seu projeto usando a biblioteca de cliente do Google OAuth.
Java
Python
Node.js
Temas relacionados
- Para uma visão geral da autenticação e autorização no Google Workspace, consulte Saiba mais sobre autenticação e autorização.
- Para 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 de usuário ou uma conta de serviço.