@TitanFighter

OAuth аутентификация + авторизация — что происходит после получения oAuth токена?

Доброго времени суток.

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

Есть к примеру связка: бекенд -> фронтенд (SPA) -> oAuth.
Пользователь хочет зарегистрироваться\залогиниться, запрашивает у поставщика oAuth код, поставщик код отдает.... в общем в итоге пользователь получает токен. В этом я разобрался.

Но что происходит дальше? Как я понимаю, Бекенд про интимные связи пользователя с поставщиком ничего не знает.
У меня есть следующее предположение, что происходит. Прошу подтвердить\опровергнуть\дополнить.

Пользователь (браузер пользователя) после получения токена должен отправить этот токен в сторону бекенда, с какими то данными, полученными от поставщика oAuth (id пользователя?, почта?, имя?). Бекенд проверяет в БД id?, почту?, если нету совпадений, регистрирует этого пользователя. Если есть в БД записи - логинит.

В случае, если токен умер, весь процесс повторяется? Или после этапа регистрации включаются сессии и бекенд периодически обновляет токен? За счет чего\как вообще, в случае социальной регистрации, бекенд поддерживает аутентификацию фронтенда?

Из-за непонимания, что происходит после подтверждения пользователя со стороны поставщика oAuth, я не могу понять, как мне поступить со следующей задачей:
Я пишу SPA и еще не разу в SPA не настраивал аутентификацию. Хочу сделать возможность регистрации пользователя через Гугл + мне нужно будет для SPA еще получать авторизацию на данные пользователя в Ютубе, и я не понимаю\не знаю, как все правильно сделать. В случае отсутствия SPA все делается просто - все делается со стороны сервера.

В случае же с SPA я вижу несколько вариантов:
1. Аутентификация пользователя (регистрация\логин) и авторизация доступа к Ютубу происходит со стороны SPA. Как только пользователь зарегистрировался\залогинился - стучимся к бекенду. Как только пользователь дал добро на использование данных Ютуба - стучимся к бекенду.

2. Все сделать со стороны бекенда. Юзер проходит аутентификацию через бекенд и бекенд на последнем этапе ответа oAuth поставщика сам обрабатывает нужные данные. Как дальше происходит логин пользователя. Сессии? В случае же Ютуба, то пользователь дает разрешение на использования запросов от своего имени не браузеру, а бекенду (тут я вижу минус - дополнительная нагрузка на бекенд, который тут выступает в роли прокси. Не вижу смысла ставить его между браузером и ютубом, если браузер и Ютуб могут общаться напрямую и по окончании, браузер может отправить итог работ бекенду одним запросом).

3. Сделать аутентификацию со стороны бекенда, а ютуб оставить на фронтенде. Если это нормальный вариант, как соорудить данную конструкцию? Передавать с бекенда фронтенду полученный после аутентификации токен, и во фронтенде расширять scope токена для получения доступа к Ютубу? Или не передавать токен, а просто сказать пользователю "дай мне разрешение к твоим данным Ютуба"?

Прошу помочь. Пора к SPA подключать гугл\ютуб, и не знаю, с какой стороны подобраться.
Всю эту конструкцию хочу сделать на Vue (пора подключать гугл\ютуб) + Django (пора понимать, как делать аутентификацию, т.е. регистрация\логин) + GraphQL (все еще в начале пути, так как увлекся Vue, очень понравилось).
  • Вопрос задан
  • 617 просмотров
Пригласить эксперта
Ответы на вопрос 1
edli007
@edli007
full stack, team lead
А потом вы запрашиваете у поставщика нужные вам данные по обычной апи, передавая с запросом токен.
Если токен соответствует нужным правам доступа то вы их получаете.

С декенда фронту данные веб сокетами отправьте.

Стучитесь с вайбер\скайп, покажу на исходниках.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы