2016-12-22 7 views
0

Для быстрого проекта для взломанной недели я и моя команда внедрили Google Sign-In в качестве регистрации/аутентификации для пользователей. Как это работает:Ток доступа к подписке Google между бэкэнд и клиентом

  1. знаков пользователей с использованием SDK на клиенте (Android + IOS) и запросы access_token
  2. Клиента получает acces_token и использует этот маркер для каждого запроса сети на внутренний интерфейс в качестве параметра запроса
  3. Наш бэкэнд не взаимодействует с сервисами google от имени пользователей.

Проблема, с которой я столкнулся, заключается в том, что предоставленный access_token, возвращаемый SDK Google, недолговечен (60 минут). Это в основном приводит меня к двум вопросам/проблемам:

  1. Является ли короткоживущий access_token даже предназначенным для использования таким образом? Я привык к другому потоку, в котором вы просто используете этот возвращенный токен google или любым другим провайдером auth для аутентификации с вашим бэкэнд, а затем используете свой собственный механизм аутентификации (вероятно, также и токен).

  2. Если я ошибаюсь в отношении 1., то какая хорошая практика для обновления токена на стороне клиента, поскольку он истекает каждые 60 минут. Как я понимаю, Google SDK начинает активность для входа в систему, и я бы предпочел бы работать со всеми сетями на моем уровне данных без контекста. Я проверяю действительность этого токена перед тем, как запросить бэкэнд каждый раз, или я начинаю какое-то обновление после того, как получаю ответ 401 или что-то подобное?

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

+0

Хороший вопрос. Поддерживает ли ваше приложение какие-либо другие механизмы аутентификации пользователя (Facebook, имя пользователя/пароль и т. Д.) Или просто Google? Если несколько методов auth, большинство разработчиков, используют опцию 1 и обмениваются токеном password/Facebook/Google для своего механизма управления сеансом (cookie или их собственные токены OAuth2, как правило). Но если у вас есть только Google, вы можете просто получить маркер ID из SDK всякий раз, когда вам нужно сделать аутентифицированный запрос на бэкэнд и прикрепить его как авторизацию. –

ответ

0

Сделайте одну вещь с помощью вашего токена доступа, предоставленного google, чтобы создать новый токен доступа в своем бэкэнд и отправить этот токен при регистрации/регистрации на клиент. Теперь ваш запрос будет использовать этот токен, чтобы идентифицировать пользователей и отслеживать все. Это тоже не истечет. Я использовал это в своем приложении, и он работает безупречно.

 Смежные вопросы

  • Нет связанных вопросов^_^