Это руководство поможет вам выбрать между использованием библиотеки Google Identity Services для авторизации пользователей или реализацией собственной библиотеки JavaScript. Оно поможет вам определить, какой поток авторизации OAuth 2.0 лучше всего подходит для вашего веб-приложения.
Перед прочтением данного руководства предполагается, что вы знакомы с терминами и понятиями, описанными в разделах «Обзор» и «Как работает авторизация пользователей ».
Библиотека GIS работает в поддерживаемых браузерах на устройстве пользователя. Она не предназначена для использования с серверными JavaScript-фреймворками, такими как Node.js; вместо этого используйте клиентскую библиотеку Node.js от Google.
Данное руководство охватывает только вопросы авторизации и обмена данными. В нем не рассматривается аутентификация пользователей; для получения информации о регистрации и входе в систему см . раздел «Вход через Google» и руководство «Переход с Google Sign-In» .
Как решить, подходит ли вам библиотека ГИС?
Вам предстоит решить, что лучше соответствует вашим потребностям: использование библиотеки Google или создание собственной. Краткий обзор функций и возможностей:
- Библиотека JavaScript Identity Services от Google реализует следующие функции:
- Диалоговые процессы получения согласия сводят к минимуму перенаправления, позволяя пользователям оставаться на вашем сайте на протяжении всего процесса авторизации.
- Функции безопасности, такие как межсайтовая подделка запросов (CRSF).
- Вспомогательные методы для запроса отдельных областей действия и подтверждения согласия пользователя.
- Удобная для пользователя обработка ошибок и ссылки на документацию, предназначенные для использования инженерами во время разработки, а также для последующих посетителей вашего сайта.
- При реализации без библиотеки Identity Services вы несете ответственность за следующее:
- Управление запросами и ответами с использованием конечных точек Google OAuth 2.0, включая перенаправления.
- Оптимизация пользовательского опыта.
- Внедрение функций безопасности для проверки запросов и ответов, а также для предотвращения CSRF-атак.
- Методы подтверждения того, что пользователь дал согласие на использование запрошенных ресурсов.
- Обработка кодов ошибок OAuth 2.0, создание удобочитаемых сообщений и ссылок на справку для пользователей.
Вкратце, Google предлагает библиотеку GIS, которая поможет вам быстро и безопасно внедрить клиент OAuth 2.0 и оптимизировать процесс авторизации пользователя.
Выбор схемы авторизации
Вам потребуется выбрать один из двух способов авторизации OAuth 2.0: неявный или с использованием кода авторизации — независимо от того, решите ли вы использовать библиотеку JavaScript Google Identity Services или создать собственную библиотеку.
В результате обоих процессов получается токен доступа, который можно использовать для вызова API Google.
Основные различия между двумя потоками заключаются в следующем:
- количество действий пользователя,
- будет ли ваше приложение вызывать API Google без присутствия пользователя?
- если требуется серверная платформа для размещения конечной точки и хранения токенов обновления для отдельных учетных записей пользователей,
- более высокий или более низкий уровень безопасности пользователей.
При сравнении сценариев и оценке требований к безопасности следует учитывать, что уровень защиты пользователей варьируется в зависимости от выбранных областей доступа. Например, просмотр приглашений в календарь в режиме только для чтения может считаться менее рискованным, чем использование области доступа для чтения и записи для редактирования файлов в Google Диск.
сравнение потоков OAuth 2.0
| Неявный поток | Поток авторизационного кода | |
| Требуется согласие пользователя | Для каждого запроса токена, включая замену просроченных токенов. | Только для первого запроса токена. |
| Пользователь должен присутствовать. | Да | Нет, поддерживается использование в автономном режиме. |
| Безопасность пользователей | Наименее | В большинстве случаев используется аутентификация клиента, что позволяет избежать рисков, связанных с обработкой токенов в браузере. |
| Выдан токен доступа. | Да | Да |
| Выдан токен обновления | Нет | Да |
| Требуется поддерживаемый браузер | Да | Да |
| Токен доступа, используемый для вызова API Google. | только из веб-приложения, работающего в браузере пользователя. | либо с сервера, работающего на серверной платформе, либо из веб-приложения, работающего в браузере пользователя. |
| Требуется серверная платформа. | Нет | Да, для размещения и хранения данных на конечных устройствах. |
| Необходимо надежное хранилище. | Нет | Да, для хранения токенов обновления. |
| Требуется размещение конечной точки для ввода кода авторизации. | Нет | Да, для получения кодов авторизации от Google. |
| Поведение токена доступа при истечении срока его действия | Для запроса и получения нового действительного токена доступа требуется действие пользователя, например, нажатие кнопки или щелчок по ссылке. | После первоначального запроса пользователя ваша платформа обменивает сохраненный токен обновления на новый действительный токен доступа, необходимый для вызова API Google. |