Проблемы проверки OAuth2 с тремя ножками для приложения Angular & Firebase - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь проверить приложение, которое управляет пользовательскими коллекциями Firestore с помощью Google Cloud API. После отправки на проверку я получил это электронное письмо от команды разработчиков API:

Уважаемый разработчик,

Благодарим Вас за отправку запроса на проверку приложения OAuth для следующих облачных областей:

https://www.googleapis.com/auth/cloud-platform.read-only https://www.googleapis.com/auth/cloud-platform

Трехсторонние гранты OAuth2 предназначены для пользователей, чтобы предоставить доступ ко всем их данным, размещенным в определенном API. Доступ к запрашиваемым областям OAuth2 обеспечит слишком широкий доступ для клиентов Google Cloud Platform. Google Cloud Platform поддерживает гранты для определенных ресурсов только для определенных пользователей / служб, доступ к которым контролируется с помощью политик Cloud IAM.

Следуйте приведенным ниже инструкциям, чтобы получить доступ к запрошенным облачным областям:

  1. Создайте учетную запись службы, чтобы представлять вашу службу и получать доступ к данным из проекта Google Cloud Platform ваших пользователей

  2. Попросите своих клиентов предоставить вашей учетной записи службы соответствующий доступ к их облакуданные с помощью политик IAM

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

У меня уже есть 3 учетные записи службы(Я думаю, что они были созданы автоматически GCP или Firebase), но у меня возникают проблемы с пониманием того, что является вторым моментом и какое действие я должен предпринять.

Приложение отправляет запросы от клиента, используя мой ключ API Firebaseчитать и писать в коллекции Firestore от имени пользователей. Я использую следующие области:

email
profile
openid
../auth/cloud-platform.read-only
../auth/cloud-platform

Я ожидаю, что процесс проверки приложения завершится успешно, поэтому пользователи не увидят экран "Неподтвержденное приложение" при входе в систему.

1 Ответ

1 голос
/ 30 сентября 2019

Вы пытаетесь предоставить себе доступ к учетной записи / данным клиента, используя идентификатор клиента OAuth вашего проекта. Это очень опасно, так как вы можете получить Identity Token и Refresh Token, которые могут затруднить отзыв вашего клиента токеном. Большинство клиентов / разработчиков не знают, как это сделать.

Google ужесточает уровень доступа, который вы можете запросить. Вы запросили разрешения, которые слишком привилегированы. Правильный подход заключается в том, чтобы клиент предоставил вам доступ к своей учетной записи через Google Cloud IAM. Этими привилегиями могут быть учетная запись службы, созданная вашей учетной записью Google, или адрес электронной почты вашей учетной записи Google. Оба метода требуют, чтобы клиент предоставил разрешения в своей учетной записи GCP с помощью IAM.

Ваша проблема может быть решена в три этапа:

1) Удалите следующие области как Googleне утвердит ваше приложение с ними без аудита.

  • cloud-platform.read-only
  • cloud-platform

Примечание. Если вы толькотребовать доступ к очень конкретной службе, изменить область действия этой службы. Возможно, вы не получили одобрение.

2) Создайте учетную запись службы в своей учетной записи Google Cloud Platform. Предоставьте адрес электронной почты вашей учетной записи службы каждому клиенту. Им потребуется добавить адрес электронной почты в консоль Google Cloud Platform в разделе IAM и назначить необходимые разрешения IAM.

Примечание: Возможно, вы захотите создать одну учетную запись для каждого клиента дляулучшенная безопасность, разделение и ведение журнала.

3) Используйте учетную запись службы вместо клиентского приложения.

Примечание: Если вам требуется GoogleКонсольный доступ к учетной записи Google Cloud Platform вашего клиента, предоставьте им свой адрес электронной почты учетной записи Google. Они могут назначить вашему адресу электронной почты необходимые разрешения для доступа к консоли своего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...