Обзор

Функция привязки учетных записей позволяет владельцам учетных записей 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 после получения согласия владельцев учетных записей на привязку своих учетных записей и обмен данными.

Token types

OAuth 2.0 uses strings called tokens to communicate between the user agent, the client application, and the OAuth 2.0 server.

Three types of OAuth 2.0 tokens can be used during account linking:

  • Authorization code. A short-lived token that can be exchanged for an access and a refresh token. For security purposes, Google calls your authorization endpoint to obtain a single use or very short-lived code.

  • Access token. A token that grants the bearer access to a resource. To limit exposure that could result from the loss of this token, it has a limited lifetime, usually expiring after an hour or so.

  • Refresh token. A long-lived token that can be exchanged for a new access token when an access token expires. When your service integrates with Google, this token is exclusively stored and used by Google. Google calls your token exchange endpoint to exchange refresh tokens for access tokens, which are in turn used to access user data.

Token handling

Race conditions in clustered environments and client-server exchanges can result in complex timing and error handling scenarios when working with tokens. For example:

  • You receive a request for a new access token, and you issue a new access token. Concurrently, you receive a request for access to your service's resource using the previous, unexpired access token.
  • Your refresh token reply is yet to be received (or is never received) by Google. Meanwhile, the previously valid refresh token is used in a request from Google.

Requests and replies can arrive in any order, or not at all due to asynchronous services running in a cluster, network behavior, or other means.

Immediate and fully consistent shared state both within, and between, your and Google's token handling systems cannot be guaranteed. Multiple valid, unexpired tokens can coexist within or across systems short period of time. To minimize negative user impact we recommend you do the following:

  • Accept unexpired access tokens, even after a newer token is issued.
  • Use alternatives to Refresh Token Rotation.
  • Support multiple, concurrently valid access and refresh tokens. For security, you should limit the number of tokens and token lifetime.
Maintenance and outage handling

During maintenance or unplanned outages Google might be unable to call your authorization or token exchange endpoints to obtain access and refresh tokens.

Your endpoints should respond with a 503 error code and empty body. In this case, Google retries failed token exchange requests for a limited time. Provided that Google is later able to obtain refresh and access tokens, failed requests are not visible to users.

Failing requests for an access token result in a visible error, if initiated by a user. Users will be required to retry linking failures if the implicit OAuth 2.0 flow is used.

Recommendations

There are many solutions to minimize maintenance impact. Some options to consider:

  • Maintain your existing service and route a limited number of requests to your newly updated service. Migrate all requests only after confirming expected functionality.

  • Reduce the number of token requests during the maintenance period:

    • Limit maintenance periods to less than the access token lifetime.

    • Temporarily increase the access token lifetime:

      1. Increase token lifetime to greater than maintenance period.
      2. Wait twice the duration of your access token lifetime, enabling users to exchange short lived tokens for longer duration tokens.
      3. Enter maintenance.
      4. Respond to token requests with a 503 error code and empty body.
      5. Exit maintenance.
      6. Decrease token lifetime back to normal.

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

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