Для приложений Google Chat, созданных на конечных точках HTTP, в этом разделе объясняется, как проверить, что запросы к вашей конечной точке поступают из Chat.
Чтобы отправлять события взаимодействия на конечную точку вашего приложения Chat, Google отправляет запросы к вашему сервису. Чтобы убедиться, что запрос исходит от Google, Chat добавляет токен носителя в заголовок Authorization
каждого HTTPS-запроса к вашей конечной точке. Например:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Строка AbCdEf123456
в предыдущем примере — это токен авторизации носителя. Это криптографический токен, созданный Google. Тип токена носителя и значение поля audience
зависят от типа аудитории аутентификации, выбранного вами при настройке приложения Chat .
Если вы реализовали своё приложение Chat с помощью Cloud Functions или Cloud Run, Cloud IAM автоматически выполнит проверку токена. Вам просто нужно добавить учётную запись сервиса Google Chat в качестве авторизованного инициатора. Если ваше приложение реализует собственный HTTP-сервер, вы можете проверить свой токен носителя с помощью клиентской библиотеки API Google с открытым исходным кодом:
- 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
Если токен не проходит проверку для приложения Chat, ваша служба должна ответить на запрос кодом ответа HTTPS 401 (Unauthorized)
.
Аутентификация запросов с использованием Cloud Functions или Cloud Run
Если логика вашей функции реализована с использованием Cloud Functions или Cloud Run, необходимо выбрать URL-адрес конечной точки HTTP в поле Аудитория аутентификации в настройках подключения приложения Chat и убедиться, что URL-адрес конечной точки HTTP в конфигурации соответствует URL-адресу конечной точки Cloud Function или Cloud Run.
Затем вам необходимо авторизовать учетную запись службы Google Chat chat@system.gserviceaccount.com
в качестве инициатора.
Следующие шаги показывают, как использовать Cloud Functions (1-го поколения):
Консоль
После развертывания вашей функции в Google Cloud:
В консоли Google Cloud перейдите на страницу Cloud Functions:
В списке «Облачные функции» установите флажок рядом с функцией-получателем. (Не нажимайте на саму функцию.)
Нажмите «Разрешения» в верхней части экрана. Откроется панель «Разрешения» .
Нажмите Добавить принципала .
В поле Новые участники введите
chat@system.gserviceaccount.com
.В раскрывающемся меню Выберите роль выберите роль Cloud Functions > Cloud Functions Invoker .
Нажмите «Сохранить» .
gcloud
Используйте команду gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
Замените RECEIVING_FUNCTION
на имя функции вашего приложения чата.
Следующие шаги показывают, как использовать службы Cloud Functions (2-го поколения) или Cloud Run:
Консоль
После развертывания вашей функции или сервиса в Google Cloud:
В консоли Google Cloud перейдите на страницу Cloud Run:
В списке служб Cloud Run установите флажок рядом с функцией получения. (Не нажимайте на саму функцию.)
Нажмите «Разрешения» в верхней части экрана. Откроется панель «Разрешения» .
Нажмите Добавить принципала .
В поле Новые участники введите
chat@system.gserviceaccount.com
.В раскрывающемся меню Выберите роль выберите роль Cloud Run > Cloud Run Invoker .
Нажмите «Сохранить» .
gcloud
Используйте команду gcloud functions add-invoker-policy-binding
:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'
Замените RECEIVING_FUNCTION
на имя функции вашего приложения чата.
Аутентификация HTTP-запросов с помощью ID-токена
Если поле «Аудитория аутентификации» в настройках подключения приложения Chat установлено на URL конечной точки HTTP , токен авторизации носителя в запросе будет представлять собой подписанный Google идентификатор OpenID Connect (OIDC). Поле email
будет иметь значение chat@system.gserviceaccount.com
. Поле «Аудитория аутентификации» будет иметь значение URL, который вы настроили в Google Chat для отправки запросов в приложение Chat. Например, если настроенная конечная точка приложения Chat — https://example.com/app/
, то поле «Аудитория аутентификации» в идентификаторе токена будет иметь значение https://example.com/app/
.
Это рекомендуемый метод аутентификации, если ваша конечная точка HTTP не размещена в сервисе, поддерживающем аутентификацию на основе IAM (например, Cloud Functions или Cloud Run). При использовании этого метода вашей HTTP-службе требуется информация об URL-адресе конечной точки, на которой она запущена, но не требуется информация о номере облачного проекта.
В следующих примерах показано, как проверить, что токен носителя был выдан Google Chat и предназначен для вашего приложения, используя клиентскую библиотеку Google OAuth.
Ява
Питон
Node.js
Аутентификация запросов с использованием номера проекта JWT
Если поле «Аудитория аутентификации» в настройках подключения приложения Chat установлено в Project Number
, токен авторизации носителя в запросе представляет собой самоподписанный JSON Web Token (JWT) , выпущенный и подписанный chat@system.gserviceaccount.com
. В поле audience
указывается номер проекта Google Cloud, который вы использовали для создания приложения Chat. Например, если номер проекта Cloud вашего приложения Chat — 1234567890
, то поле audience
в JWT будет равно 1234567890
.
Этот метод аутентификации рекомендуется использовать только в том случае, если вы предпочитаете использовать номер облачного проекта для проверки запросов вместо URL-адреса конечной точки HTTP. Например, если вы хотите менять URL-адрес конечной точки с течением времени, сохраняя при этом тот же номер облачного проекта, или если вы хотите использовать одну и ту же конечную точку для нескольких номеров облачных проектов и хотите сравнить поле audience
со списком номеров облачных проектов.
В следующих примерах показано, как проверить, что токен носителя был выпущен Google Chat и предназначен для вашего проекта, с использованием клиентской библиотеки Google OAuth.
Ява
Питон
Node.js
Похожие темы
- Обзор аутентификации и авторизации в Google Workspace см. в разделе «Подробнее об аутентификации и авторизации» .
- Обзор аутентификации и авторизации в чате см. в разделе Обзор аутентификации .
- Настройте аутентификацию и авторизацию с использованием учетных данных пользователя или учетной записи службы .