Как поделиться авторизацией Google API для надстройки скрипта Google Apps с другим проектом Google Cloud?

Компоненты системы

  • Опубликованная надстройка Google Apps Script ("надстройка"), а также опубликованная на торговой площадке G Suite установка для всего домена
    • до сих пор в своем первоначальном проекте GCP P1
    • имеет идентификатор клиента OAuth2, который был сгенерирован автоматически при создании скрипта
  • Веб-приложение ("web-приложение") в Google Cloud, по причинам квоты, предпочтительно в отдельном проекте P2 (но тот же владелец и в той же организации, что и проект надстройки). Он заменяет веб-приложение с той же функциональностью, которая до сих пор была частью дополнения.

client-secrets-addon.json выглядит так:

{"web":{
"client_id": "57...1t.apps.googleusercontent.com",
"project_id": "project-id-95...70",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":
"https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "K2...y1",
"redirect_uris": ["https://script.google.com/oauthcallback"]
}}

Владелец не имеет права добавлять к нему другой URI перенаправления. Очевидно ограничение безопасности, специфичное для клиента по умолчанию любого проекта скрипта Apps. Похоже, мы не можем просто использовать тот же идентификатор клиента в новом веб-приложении.

Случаи применения

Установка дополнений владельцем ресурса

Администратор A G Suite или владелец ресурса устанавливает надстройку для файлов на Google Диске. Во время установки пользователю предоставляется экран согласия OAUTH2 для предоставления необходимых областей для Google Диска и нескольких других областей API Google (включая автономный доступ).

Аддон запущен

Пока пользователь без учетной записи Google работает с файлом владельца ресурса в Google Диске (файл), надстройка запускается. Надстройка "выполняется как я" (владелец скрипта). От имени владельца ресурса надстройка отправляет уведомления другим пользователям.

Пользователи отвечают на уведомления

При получении уведомления пользователи (не учетная запись Google) направляются в веб-приложение для определенных действий. В результате веб-приложению снова необходим доступ к файлу.

Проблемы

  1. Ранее веб-приложение было реализовано в том же сценарии, что и надстройка. Есть много владельцев ресурсов и администраторов, которые уже предоставили области, и мы не хотим нарушать надстройку из-за отсутствия областей для нового веб-приложения.

  2. Поскольку владелец ресурса не присутствует в тот момент, когда веб-приложение обращается к файлу, веб-приложению нужны области во время установки, как и у надстройки.

Требования

  1. Оптимальное взаимодействие с пользователем было бы, если бы только владелец ресурса мог выполнить только одну авторизацию во время установки надстройки.

  2. Владельцы существующих ресурсов не обязаны повторять авторизацию в новом веб-приложении, чтобы избежать сбоев.

  3. В списке приложений Google, имеющих доступ, отображение надстройки и веб-приложения как одного приложения и отзыв доступа однозначно аннулирует доступ для обоих компонентов.

  4. Если единственный вариант, отвечающий этим требованиям, мы рассмотрим размещение веб-приложения в том же проекте, что и надстройка.

Как лучше всего делиться уже завершенными авторизациями Google API надстройки, чтобы новое веб-приложение могло их использовать?

0 ответов