Аутентификация и авторизация — это механизмы, используемые для проверки личности и доступа к ресурсам соответственно. В этом документе описывается, как работают аутентификация и авторизация для приложений Chat и запросов Chat API.
Обзор процесса
На следующей схеме показаны этапы аутентификации и авторизации высокого уровня для Google Chat:
![Общие шаги по аутентификации и авторизации Google Chat](https://developers-dot-devsite-v2-prod.appspot.com/static/workspace/chat/images/auth-process.png?authuser=19&hl=ru)
Настройте проект Google Cloud, включите Chat API и настройте приложение Chat. Во время разработки вы создаете проект Google Cloud. В проекте Google Cloud вы включаете Chat API, настраиваете приложение Chat и настраиваете аутентификацию. Дополнительную информацию см. в разделах «Разработка в Google Workspace» и «Создание приложения Chat» .
Вызов API чата. Когда ваше приложение вызывает API чата, оно отправляет учетные данные для аутентификации в API чата. Если ваше приложение проверяет подлинность с помощью учетной записи службы, учетные данные отправляются как часть кода вашего приложения. Если ваше приложение требует вызова Chat API с использованием аутентификации пользователя, которая еще не предоставлена, оно предлагает пользователю войти в систему.
Запросить ресурсы . Ваше приложение запрашивает доступ к областям , которые вы указываете при настройке аутентификации.
Запрос согласия. Если ваше приложение выполняет аутентификацию пользователя, Google отображает экран согласия OAuth, чтобы пользователь мог решить, предоставлять ли вашему приложению доступ к запрошенным данным. Аутентификация с помощью учетной записи службы не требует согласия пользователя.
Отправка утвержденного запроса на ресурсы. Если пользователь соглашается на области авторизации, ваше приложение объединяет учетные данные и утвержденные пользователем области в запрос. Запрос отправляется на сервер авторизации Google для получения токена доступа.
Google возвращает токен доступа: токен доступа содержит список предоставленных областей. Если возвращаемый список областей более ограничен, чем запрошенные области, ваше приложение отключает все функции, ограниченные токеном.
Доступ к запрашиваемым ресурсам. Ваше приложение использует токен доступа от Google для вызова Chat API и доступа к ресурсам Chat API.
Получите токен обновления (необязательно). Если вашему приложению необходим доступ к API Google Chat по истечении срока действия одного токена доступа, оно может получить токен обновления. Дополнительную информацию см. в разделе Использование OAuth 2.0 для доступа к API Google .
Запросите дополнительные ресурсы. Если вашему приложению требуется больше доступа, оно просит пользователя предоставить новые области, в результате чего отправляется новый запрос на получение токена доступа (шаги 3–6).
Когда приложения чата требуют аутентификации
Приложения чата могут отправлять сообщения в ответ на взаимодействие с пользователем или асинхронно. Они также могут выполнять задачи от имени пользователя, например создавать пространство чата или получать список людей в пространстве чата.
Приложения чата не требуют аутентификации для ответа на взаимодействие с пользователем, если только приложение чата не вызывает API чата или другой API Google при обработке ответа.
Чтобы отправлять асинхронные сообщения или выполнять задачи от имени пользователя, приложения Chat отправляют запросы RESTful к Chat API , которые требуют аутентификации и авторизации.
Ответы на действия пользователя не требуют аутентификации.
Приложениям Google Chat не требуется проходить аутентификацию в качестве пользователя или приложения Chat, чтобы получать события взаимодействия и синхронно реагировать на них.
Приложения Google Chat получают события взаимодействия всякий раз, когда пользователь взаимодействует или вызывает приложение Chat, включая следующие:
- Пользователь отправляет сообщение в приложение чата.
- Пользователь @упоминает приложение Chat.
- Пользователь вызывает одну из косых команд приложения Chat.
На следующей диаграмме показана последовательность запросов и ответов между пользователем Chat и приложением Chat:
![Для событий взаимодействия с приложением Chat авторизация не требуется.](https://developers-dot-devsite-v2-prod.appspot.com/static/workspace/chat/images/auth-synchronous.png?authuser=19&hl=ru)
- Пользователь отправляет сообщение в приложение Chat в Google Chat.
- Google Chat пересылает сообщение в приложение.
- Приложение получает сообщение, обрабатывает его и возвращает ответ в Google Chat.
- Google Chat отображает ответ для пользователя или в пространстве.
Эта последовательность повторяется для каждого события взаимодействия с приложением чата.
Асинхронные сообщения требуют аутентификации
Асинхронные сообщения возникают, когда приложение Chat отправляет запрос к Chat API , который требует аутентификации и авторизации.
Вызывая Chat API, приложения Chat могут публиковать сообщения в Google Chat или выполнять задачи и получать доступ к данным от имени пользователя. Например, после обнаружения сбоя сервера приложение Chat может вызвать API Chat, чтобы:
- Создайте чат, посвященный расследованию и устранению сбоев.
- Добавляйте людей в пространство чата.
- Опубликуйте сообщение в чате, чтобы подробно рассказать об отключении электроэнергии.
На следующей схеме показана асинхронная последовательность сообщений между приложением Chat и пространством Chat:
![Аутентификация, необходимая для асинхронных сообщений](https://developers-dot-devsite-v2-prod.appspot.com/static/workspace/chat/images/auth-asynchronous.png?authuser=19&hl=ru)
- Приложение Chat создает сообщение, вызывая Chat API с помощью метода
spaces.messages.create
, и включает учетные данные пользователя в HTTP-запрос. - Google Chat проверяет подлинность приложения Chat с помощью учетной записи службы или учетных данных пользователя.
- Google Chat отображает сообщение приложения в указанном пространстве чата.
Области API чата
Настройте экран согласия OAuth и выберите области, чтобы определить, какая информация будет отображаться пользователям и рецензентам приложений, а также зарегистрируйте свое приложение, чтобы можно было опубликовать его позже.
Чтобы определить уровень доступа, предоставленный вашему приложению, вам необходимо определить и объявить области авторизации . Область авторизации – это строка URI OAuth 2.0, содержащая имя приложения Google Workspace, тип данных, к которым оно обращается, и уровень доступа.
Нечувствительные области
Код области действия | Описание |
---|---|
https://www.googleapis.com/auth/chat.bot | Область действия Позволяет приложениям чата просматривать чаты и отправлять сообщения. Предоставляет доступ ко всем функциям, доступным в приложениях чата. |
Чувствительные области
Код области действия | Описание |
---|---|
https://www.googleapis.com/auth/chat.spaces | Создавайте беседы и пространства, а также просматривайте или редактируйте метаданные (включая настройки истории и настройки доступа) в Chat. |
https://www.googleapis.com/auth/chat.spaces.create | Создавайте новые разговоры в чате. |
https://www.googleapis.com/auth/chat.spaces.readonly | Просматривайте чат и группы в Chat. |
https://www.googleapis.com/auth/chat.memberships | Просматривайте, добавляйте, обновляйте и удаляйте участников из бесед в чате. |
https://www.googleapis.com/auth/chat.memberships.app | Добавлять и удалять себя из разговоров в Google Chat. |
https://www.googleapis.com/auth/chat.memberships.readonly | Просмотр участников в беседах чата. |
https://www.googleapis.com/auth/chat.messages.create | Создавайте и отправляйте сообщения в чате. |
https://www.googleapis.com/auth/chat.messages.reactions | Просматривайте, добавляйте и удаляйте реакции на сообщения в чате. |
https://www.googleapis.com/auth/chat.messages.reactions.create | Добавьте реакцию на сообщение в чате. |
https://www.googleapis.com/auth/chat.messages.reactions.readonly | Просмотр реакций на сообщение в чате. |
https://www.googleapis.com/auth/chat.users.readstate | Просмотр и изменение времени последнего чтения бесед в чате. |
https://www.googleapis.com/auth/chat.users.readstate.readonly | Просмотр времени последнего чтения бесед в чате. |
https://www.googleapis.com/auth/chat.admin.spaces.readonly | Просматривайте чаты и пространства, принадлежащие домену администратора, в Chat. |
https://www.googleapis.com/auth/chat.admin.spaces | Просматривайте и редактируйте чаты и пространства, принадлежащие домену администратора, в Chat. |
https://www.googleapis.com/auth/chat.admin.memberships.readonly | Просматривайте участников и менеджеров в беседах, принадлежащих домену администратора в Chat. |
https://www.googleapis.com/auth/chat.admin.memberships | Просматривайте, добавляйте, обновляйте и удаляйте участников и менеджеров в беседах, принадлежащих домену администратора в Chat. |
Ограниченные области применения
Код области действия | Описание |
---|---|
https://www.googleapis.com/auth/chat.delete | Удалите разговоры и группы, а также закройте доступ к связанным файлам в чате. |
https://www.googleapis.com/auth/chat.import | Импортируйте группы, сообщения и членство в Chat. Дополнительную информацию см. в разделе Разрешить приложениям чата импортировать данные. |
https://www.googleapis.com/auth/chat.messages | Просматривайте, составляйте, отправляйте, обновляйте и удаляйте сообщения, а также добавляйте, просматривайте и удаляйте реакции на сообщения. |
https://www.googleapis.com/auth/chat.messages.readonly | Просматривайте сообщения и реакции в чате. |
https://www.googleapis.com/auth/chat.admin.delete | Удалите беседы и пространства, принадлежащие домену администратора, а также закройте доступ к связанным файлам в чате. |
Области в предыдущих таблицах указывают на их чувствительность в соответствии со следующими определениями:
Неконфиденциально — эти области обеспечивают наименьшую сферу авторизационного доступа и требуют только базовой проверки приложения. Информацию об этом требовании см. в разделе Действия по подготовке к проверке .
Конфиденциальность — эти области предоставляют вашему приложению доступ к данным Google конкретного пользователя после получения авторизации от пользователя. Вам потребуется пройти дополнительную проверку приложения. Информацию об этом требовании см. в разделе Действия для приложений, запрашивающих конфиденциальные области .
Ограниченный — эти области обеспечивают широкий доступ к пользовательским данным Google и требуют прохождения процесса проверки ограниченной области. Информацию об этом требовании см. в разделе Службы Google API: политика в отношении пользовательских данных и дополнительные требования для определенных областей API . См. также шаги для приложений, запрашивающих ограниченные области .
Если вашему приложению требуется доступ к каким-либо другим API Google, вы также можете добавить эти области. Дополнительную информацию об областях API Google см. в разделе Использование OAuth 2.0 для доступа к API Google .
Дополнительные сведения об областях действия API Google Workspace см. в разделе Настройка экрана согласия OAuth и выбор областей .
Типы необходимой аутентификации
Существует два способа аутентификации и авторизации приложений Chat с помощью Chat API: учетные данные пользователя или учетные записи служб.
Благодаря авторизации с использованием учетных данных пользователя приложение чата может получать доступ к пользовательским данным и выполнять действия от имени пользователя. Области OAuth определяют авторизованные данные и действия.
При авторизации приложения приложение Chat обращается к API как приложение, используя учетные данные сервисной учетной записи. Для авторизации приложения всегда используется область авторизации chat.bot
.
Решая, какой тип учетных данных использовать для конкретного запроса API, имейте в виду, что некоторые методы API поддерживают только определенный тип учетных данных. Если метод API поддерживает оба учетных данных, тип учетных данных, используемых в вызове, влияет на возвращаемый результат:
- При авторизации приложения методы возвращают только ресурсы, к которым приложение может получить доступ.
- При авторизации пользователя методы возвращают только те ресурсы, к которым пользователь может получить доступ в пользовательском интерфейсе чата.
Например, вызов метода ListSpaces
с авторизацией приложения возвращает список пространств, членом которых является приложение. Вызов ListSpaces
с авторизацией пользователя возвращает список пространств, членом которых является пользователь. На практике ваше приложение может использовать оба типа авторизации при вызове Chat API, в зависимости от желаемой функциональности.
Для асинхронных вызовов API чата
В следующей таблице перечислены методы Chat API и поддерживаемые области авторизации:
Метод | Поддерживается аутентификация пользователя | Поддерживается аутентификация приложения | Поддерживаемые области авторизации | |
---|---|---|---|---|
Пространства | ||||
Создайте пространство | — | С аутентификацией пользователя :
| ||
Настроить пространство | — | С аутентификацией пользователя :
| ||
Получите место | С аутентификацией пользователя :
| |||
Список пространств | С аутентификацией пользователя :
| |||
Поиск пространств | При аутентификации пользователя с использованием прав администратора:
| |||
Обновить пространство | — | С аутентификацией пользователя :
| ||
Удалить пространство | — | С аутентификацией пользователя :
| ||
Завершите процесс импорта пространства | — | С аутентификацией пользователя :
| ||
Найти прямое сообщение | С аутентификацией пользователя :
| |||
Члены | ||||
Создать участника | — | С аутентификацией пользователя :
| ||
Получить члена | С аутентификацией пользователя :
| |||
Список участников | С аутентификацией пользователя :
| |||
Удалить участника | — | С аутентификацией пользователя :
| ||
Обновить участника | — | С аутентификацией пользователя :
| ||
Сообщения | ||||
Создать сообщение | С аутентификацией пользователя :
| |||
Получить сообщение | С аутентификацией пользователя :
| |||
Список сообщений | — | С аутентификацией пользователя :
| ||
Обновить сообщение | С аутентификацией пользователя :
| |||
Удалить сообщение | С аутентификацией пользователя :
| |||
Реакции | ||||
Создать реакцию | — | С аутентификацией пользователя :
| ||
Список реакций | — | С аутентификацией пользователя :
| ||
Удаление реакции | — | С аутентификацией пользователя :
| ||
Медиа и вложения | ||||
Загрузить медиафайл в виде вложения | — | С аутентификацией пользователя :
| ||
Скачать медиа | С аутентификацией пользователя :
| |||
Получить вложение к сообщению | — | С аутентификацией приложения :
| ||
Состояния чтения пользователя | ||||
Получить состояние чтения пространства пользователя | — | С аутентификацией пользователя :
| ||
Обновление состояния чтения пространства пользователя | — | С аутентификацией пользователя :
| ||
Получить состояние чтения потока пользователя | — | С аутентификацией пользователя :
| ||
Космические события | ||||
Получайте космические события | — | При аутентификации пользователя вы должны использовать область, основанную на типе события :
| ||
Список космических событий | — | При использовании аутентификации пользователя вы должны использовать область для каждого типа событий, включенных в запрос:
|
Для событий взаимодействия с приложением чата
В следующей таблице перечислены распространенные способы взаимодействия пользователей с приложениями чата, а также указывается, требуется или поддерживается проверка подлинности:
Сценарий | Аутентификация не требуется | Поддерживается аутентификация пользователя | Поддерживается аутентификация приложения | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Получайте сообщения от: |
| |||||||||||||||
Отвечайте на сообщения: |
| |||||||||||||||
Отправляйте новые сообщения: |
|
Связанные темы
- Обзор аутентификации и авторизации в Google Workspace см. в статье Подробнее об аутентификации и авторизации .
- Обзор аутентификации и авторизации в Google Cloud см. в разделе Обзор аутентификации .
- Дополнительные сведения об учетных записях служб см. в разделе Учетные записи служб .
- Дополнительные сведения о том, как API Google используют OAuth 2.0, см. в разделе Использование OAuth 2.0 для доступа к API Google .
- Настройте аутентификацию и авторизацию с использованием учетных данных пользователя или учетной записи службы .