Обзор

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

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

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

Варианты использования

Вот несколько причин для внедрения функции привязки аккаунта Google:

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

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

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

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

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

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

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

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

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

  • Повысьте уровень безопасности с помощью потока авторизационного кода OAuth Linking .

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

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

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

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

Потоки связывания учетных записей

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

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

Связывание OAuth («Web OAuth»)

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

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

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

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

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

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

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

Как это работает:

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

  • Если приложение найдено, пользователь переключается на ваше приложение. Ваше приложение запрашивает у пользователя согласие на привязку учетной записи к Google, а затем переключается обратно на страницу Google.
  • Если приложение не найдено или в процессе привязки приложения возникает ошибка, пользователь перенаправляется на упрощенный или веб-процесс аутентификации OAuth.

Рисунок 2. Привязка учетной записи на телефоне пользователя к приложению App Flip.

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

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

Как это работает:

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

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

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

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

Мы рекомендуем внедрить все варианты построения ссылок, чтобы обеспечить пользователям наилучший опыт. Варианты «Упрощенный» и «Переключение приложения» упрощают процесс построения ссылок, поскольку пользователи могут завершить его за очень короткое время. Построение ссылок через Web OAuth требует наименьших усилий и является хорошей отправной точкой, после чего можно добавлять другие варианты.

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

Функция привязки учетных записей Google основана на отраслевом стандарте OAuth 2.0.

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

Типы токенов

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

При привязке учетной записи можно использовать три типа токенов OAuth 2.0:

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

  • Токен доступа . Токен, предоставляющий носителю доступ к ресурсу. Чтобы ограничить риск, который может возникнуть в результате потери этого токена, он имеет ограниченный срок действия, обычно истекающий через час или около того.

  • Обновить токен . Долгосрочный токен, который можно обменять на новый токен доступа по истечении срока действия токена доступа. Когда ваш сервис интегрируется с Google, этот токен хранится и используется исключительно Google. Google вызывает вашу конечную точку обмена токенами, чтобы обменять токены обновления на токены доступа, которые, в свою очередь, используются для доступа к пользовательским данным.

Обработка токенов

Условия гонки в кластерных средах и обменах клиент-сервер могут привести к сложным сценариям синхронизации и обработки ошибок при работе с токенами. Например:

  • Вы получаете запрос на новый токен доступа и выдаете новый токен доступа. Одновременно вы получаете запрос на доступ к ресурсу вашей службы с использованием предыдущего токена доступа с неистекшим сроком действия.
  • Ваш ответ с токеном обновления еще не получен (или никогда не получен) Google. При этом ранее действительный токен обновления используется в запросе от Google.

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

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

  • Принимайте токены доступа с неистёкшим сроком действия даже после выпуска нового токена.
  • Используйте альтернативы Refresh Token Rotation .
  • Поддержка нескольких одновременно действующих токенов доступа и обновления. В целях безопасности вам следует ограничить количество токенов и время жизни токена.
Обслуживание и устранение сбоев

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

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

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

Рекомендации

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

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

  • Уменьшите количество запросов токенов в период обслуживания:

    • Ограничьте периоды обслуживания меньшими сроками действия токена доступа.

    • Временно увеличьте срок действия токена доступа:

      1. Увеличьте срок службы токена, чтобы он превышал период обслуживания.
      2. Подождите вдвое дольше срока действия вашего токена доступа, что позволит пользователям обменивать кратковременные токены на токены с более длительным сроком действия.
      3. Введите техническое обслуживание.
      4. Отвечайте на запросы токенов с кодом ошибки 503 и пустым телом.
      5. Выездное обслуживание.
      6. Уменьшите срок жизни токена до нормального.

Зарегистрироваться в Google

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