OAuth и интеграция с G suite
У меня есть веб-приложение DRF и Vue, которое использует OAuth для аутентификации с помощью пакета drf-social-oauth2.
По сути, аутентификация происходит следующим образом:
- пользователь входит в систему с помощью своего аккаунта Google и получает токен от Google
- фронтенд-приложение делает запрос к токену
convert-token
моего бэкенда, который проверяет токен Google и выдает собственный токен, который также сохраняется в моей базе данных .
- с этого момента фронтенд-приложение будет включать этот собственный токен в каждый последующий запрос к моему бэкенду .
- если пользователь аутентифицируется в первый раз, на моем бэкенде создается новая учетная запись. Это означает, что мой бэкэнд, понятное дело, управляет собственным набором учетных записей пользователей, которые концептуально являются двойниками учетных записей Google, используемых для входа в систему.
Сейчас я хочу интегрировать некоторые приложения Google в свое веб-приложение. Для простого примера я хотел бы включить функциональность, позволяющую получить доступ к слайдам и документам Google из фронтенда моего приложения. Интеграция с этими сервисами основана на <iframe>
, поэтому, по сути, я буду вставлять некоторые iframe для доступа к ресурсам G Suite.
Вот в чем проблема: поскольку, как я уже объяснял, запросы к моему бэкенду аутентифицируются с помощью собственного токена, а не токена Google, может случиться так, что пользователь может зайти на мой сайт под определенным пользователем X (который, в действительности, будет просто моим "двойником" X в качестве внутреннего аккаунта пользователя, но это прозрачно для пользователя, который будет думать, что он вошел "под своим аккаунтом Google"), но он мог войти в Google под другим аккаунтом, в результате чего он получит доступ к встроенному ресурсу с другой идентификацией, чем та, которую он использует для моего сайта.
Это может иметь довольно плохие последствия, если, например, издатель этого контента на моем сайте разрешил доступ к нему только определенным учетным записям: авторизованный пользователь может не получить доступ к контенту и не понять почему, поскольку он, казалось бы, использует правильную идентификацию.
Есть ли лучшая альтернатива для более "единообразного" управления аутентификацией и синхронизации того, какой аккаунт пользователь зарегистрировал в Google и какой он использует для моего сайта?