Обзор

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

Безопасный протокол OAuth 2.0 позволяет безопасно связать учетную запись Google пользователя с его учетной записью на вашей платформе, тем самым предоставляя приложениям и устройствам Google доступ к вашим службам.

Пользователи могут связать или разъединить свои учетные записи и при желании создать новую учетную запись на вашей платформе с помощью привязки учетной записи Google.

Сценарии использования

Вот некоторые из причин, по которым необходимо привязать учетную запись Google:

  • Делитесь данными пользователя с вашей платформы с приложениями и сервисами Google.

  • Воспроизведение видео и фильмов с помощью Google TV .

  • Управляйте и контролируйте устройства, подключенные к Google Smart Home , с помощью приложения Google Home и Google Assistant, «Эй, Google, включи свет».

  • Создавайте настраиваемые пользователем возможности и функции Google Assistant с помощью разговорных действий , «Окей, Google, закажи мой обычный товар в Starbucks».

  • Предоставьте пользователям возможность получать вознаграждение за просмотр подходящих прямых трансляций на YouTube после привязки своего аккаунта Google к аккаунту партнера по вознаграждениям .

  • Предварительно заполните новые аккаунты во время регистрации данными, предоставленными по обоюдному согласию, из профиля аккаунта Google .

Поддерживаемые функции

Эти функции поддерживаются привязкой аккаунта Google:

  • Быстро и легко делитесь своими данными, используя неявный поток связывания OAuth .

  • Обеспечьте повышенную безопасность с помощью потока кода авторизации связывания OAuth .

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

  • Уменьшите трение с помощью App Flip . Из доверенного приложения Google одним нажатием можно безопасно открыть проверенное приложение для Android или iOS, а одним нажатием предоставить согласие пользователя и связать учетные записи.

  • Улучшите конфиденциальность пользователей, определив настраиваемые области для обмена только необходимыми данными, повысьте доверие пользователей, четко определив, как используются их данные.

  • Доступ к данным и службам, размещенным на вашей платформе, может быть отозван путем отключения учетных записей. Внедрение дополнительной конечной точки отзыва токена позволяет вам оставаться в курсе событий, инициированных Google, а защита между учетными записями (RISC) позволяет уведомлять Google о любых событиях отмены связи, происходящих на вашей платформе.

Потоки привязки аккаунта

Существует 3 потока привязки аккаунтов Google, каждый из которых основан на OAuth и требует, чтобы вы управляли или контролировали конечные точки авторизации и обмена токенами, совместимые с OAuth 2.0.

В процессе привязки вы выдаете токены доступа к Google для отдельных учетных записей Google после получения согласия владельцев учетных записей на привязку своих учетных записей и обмен данными.

Связывание OAuth («Веб-OAuth»)

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

Связывание OAuth поддерживает код авторизации и неявные потоки OAuth. Ваша служба должна размещать конечную точку авторизации, совместимую с OAuth 2.0, для неявного потока и должна предоставлять конечную точку авторизации и обмена токенами при использовании потока кода авторизации.

Рисунок 1 . Связывание учетной записи на телефоне пользователя с помощью Web OAuth

Связывание приложений на основе OAuth («App Flip»)

Поток OAuth, который отправляет пользователей в ваше приложение для связывания.

Связывание приложений на основе OAuth помогает пользователям перемещаться между вашими проверенными мобильными приложениями Android или iOS и платформой Google, чтобы просмотреть предлагаемые изменения доступа к данным и дать свое согласие на привязку своей учетной записи на вашей платформе к своей учетной записи Google. Чтобы включить App Flip, ваш сервис должен поддерживать связывание OAuth или связывание входа Google на основе OAuth с использованием потока кода авторизации .

Приложение Flip поддерживается как для Android , так и для iOS .

Как это устроено:

Приложение Google проверяет, установлено ли ваше приложение на устройстве пользователя:

  • Если приложение найдено, пользователь «переворачивается» на ваше приложение. Ваше приложение получает согласие пользователя на привязку учетной записи к Google, а затем «откатывается» на поверхность Google.
  • Если приложение не найдено или возникает ошибка в процессе связывания приложения, пользователь перенаправляется на поток Streamlined или Web OAuth.

Рисунок 2 . Связывание учетной записи на телефоне пользователя с App Flip

Оптимизированное связывание на основе OAuth («Оптимизированное»)

Упрощенное связывание Google Sign-In на основе OAuth добавляет вход Google поверх связывания OAuth, позволяя пользователям завершить процесс связывания, не покидая поверхность Google, тем самым уменьшая трения и отказы. Упрощенное связывание на основе OAuth предлагает лучший пользовательский интерфейс с простым входом в систему, созданием учетной записи и связыванием учетной записи за счет сочетания входа Google со связыванием OAuth. Ваша служба должна поддерживать конечные точки авторизации и обмена токенами, совместимые с OAuth 2.0. Кроме того, ваша конечная точка обмена маркерами должна поддерживать утверждения JSON Web Token (JWT) и реализовывать намерения check , create и get .

Как это устроено:

Google утверждает учетную запись пользователя и передает вам эту информацию:

  • Если для пользователя существует учетная запись в вашей базе данных, пользователь успешно связывает свою учетную запись Google со своей учетной записью в вашей службе.
  • Если в вашей базе данных для пользователя нет учетной записи, пользователь может либо создать новую учетную запись 3P с утвержденной информацией, которую предоставляет Google: адрес электронной почты, имя и изображение профиля , либо выбрать вход и связать с другим адресом электронной почты (для этого потребуется, чтобы они для входа в вашу службу через Web OAuth).

Рисунок 3 . Связывание учетной записи на телефоне пользователя с помощью Streamlined Linking

Какой поток следует использовать?

Мы рекомендуем внедрить все потоки, чтобы обеспечить пользователям наилучшие возможности связывания. Потоки Streamlined и App flip уменьшают трудности при связывании, поскольку пользователи могут завершить процесс связывания за несколько шагов. Связывание Web OAuth требует наименьших усилий и является хорошей отправной точкой, после которой вы можете добавить другие потоки связывания.

Работа с токенами

Привязка аккаунта Google основана на отраслевом стандарте OAuth 2.0.

Вы выдаете токены доступа к Google для отдельных учетных записей Google после получения согласия владельцев учетных записей на связывание своих учетных записей и обмен данными.

代币类型

OAuth 2.0使用称为令牌的字符串在用户代理,客户端应用程序和OAuth 2.0服务器之间进行通信。

帐户链接期间可以使用三种OAuth 2.0令牌:

  • 授权码。可以交换访问权限的短期令牌和刷新令牌。为了安全起见,Google会调用您的授权端点来获取一次性使用或寿命很短的代码。

  • 访问令牌。授予承载者对资源的访问权的令牌。为了限制可能因丢失此令牌而导致的风险敞口,它的使用寿命有限,通常会在一个小时左右后过期。

  • 刷新令牌。访问令牌到期时可以交换新的访问令牌的长期令牌。当您的服务与Google集成时,此令牌将由Google专门存储和使用。 Google调用您的令牌交换端点,以将刷新令牌交换为访问令牌,这些访问令牌又用于访问用户数据。

代币处理

在使用令牌时,群集环境和客户端-服务器交换中的竞争条件可能导致复杂的时序和错误处理方案。例如:

  • 您收到一个新的访问令牌的请求,并发出一个新的访问令牌。同时,您会收到使用前一个未过期的访问令牌访问服务资源的请求。
  • 您的刷新令牌回复尚未被Google收到(或从未收到)。同时,先前有效的刷新令牌用于Google的请求中。

由于在群集中运行的异步服务,网络行为或其他方式,请求和答复可以以任何顺序到达,或者根本无法到达。

无法保证您和Google的令牌处理系统之间以及之间的即时且完全一致的共享状态。多个有效的未过期令牌可以在短时间内在系统内或系统之间共存。为了最大程度地减少对用户的负面影响,建议您执行以下操作:

  • 即使发布了更新的令牌,也要接受未过期的访问令牌。
  • 使用替代方法来刷新令牌轮换
  • 支持多个并发有效的访问和刷新令牌。为了安全起见,应限制令牌的数量和令牌的生存期。
维护和停运处理

在维护或计划外中断期间,Google可能无法调用您的授权或令牌交换端点来获取访问权限并刷新令牌。

您的端点应以503错误代码和空主体作为响应。在这种情况下,Google将在有限的时间内重试失败的令牌交换请求。如果Google以后能够获取刷新和访问令牌,则失败的请求对用户不可见。

如果用户发起访问请求失败的请求,则会导致可见错误。如果使用隐式OAuth 2.0流程,则要求用户重试链接失败。

推荐建议

有许多解决方案可以最大程度地减少维护影响。要考虑的一些选项:

  • 维护您现有的服务,并将有限数量的请求路由到您的新更新的服务。仅在确认预期功能后才能迁移所有请求。

  • 在维护期间减少令牌请求的数量:

    • 将维护周期限制为少于访问令牌生存期。

    • 临时增加访问令牌的生存期:

      1. 将令牌寿命增加到大于维护期限。
      2. 等待两次访问令牌生存期,从而使用户可以将短期令牌替换为较长令牌。
      3. 输入维护。
      4. 使用503错误代码和空主体来响应令牌请求。
      5. 退出维护。
      6. 将令牌生存期降低到正常水平。

Регистрация в Google

Нам потребуются сведения о вашей настройке OAuth 2.0 и обмен учетными данными, чтобы разрешить привязку учетных записей. Подробности смотрите в регистрации .