Должен ли токен доступа в oAuth генерироваться каждый раз, когда пользователь входит в систему? - PullRequest
10 голосов
/ 07 октября 2011

Я реализовал oAuth в php (в настоящее время для твиттера), и, как я прочитал в нескольких уроках, вы должны хранить токен доступа в db для будущего использования. Однако я не понимаю, как вы узнаете, есть ли у вас токен доступа, сохраненный для конкретного пользователя, чтобы решить, следует ли вам извлечь его из БД или восстановить его. Вот поток, описывающий мой вопрос:

Впервые пользователь входит в систему:

  • получить токен запроса
  • отправить пользователя на страницу аутентификации провайдера
  • пользователь возвращается к URL обратного вызова с токеном oauth и верификатором oauth
  • получить токен доступа
  • сохранить токен доступа / идентификатор_пользователя / имя_экран в БД для дальнейшего использования

Пользователь возвращается через 10 минут:

  • токен доступа все еще находится в сеансах сервера, если пользователь не вышел из системы. иначе повторите процесс.

Пользователь возвращается через 1 месяц:

  • получить токен запроса
  • отправить пользователя на страницу аутентификации провайдера
  • пользователь возвращается к URL обратного вызова с токеном oauth и верификатором oauth
  • (на данный момент у меня есть только oauth-токены, как я могу узнать, если пользователь ранее вошел в систему с помощью твиттера и вытащил свой токен доступа из БД?)
  • , если это первый логин пользователя, сгенерировать токен доступа.

Основной рабочий процесс для oAuth понятен, однако неясно, как обрабатывать возвращающихся пользователей и какие данные хранить или нет.

Миллион спасибо!

Ответы [ 2 ]

18 голосов
/ 07 октября 2011

Вы не должны восстанавливать токен для каждого доступа. Создайте его только тогда, когда он истек. Я создал твиттер-приложение, используя OAuth. Вот мой поток:

  1. при входе пользователя я проверю, есть ли у них токен в БД

    1,1. Если он не существует, аутентифицируйте их, а затем сохраните и используйте полученный токен

    1.2. Если он существует, используйте его.

    1.2.1. Если твиттер не жалуется, токен остается в силе, используйте его.

    1.2.2. Если твиттер пожаловался, срок действия токена истек. Вернуться к 1.1.

    1.2.3. Если после х повторить твиттер все равно пожаловался. Что-то не так, сообщите администратору!

Вот графическое объяснение:

enter image description here

0 голосов
/ 21 марта 2018

Единственное, что, по моему мнению, здесь отсутствует, - это генерировать случайный (длинный и не угадываемый) идентификатор пользователя при первом присоединении к системе и сохранять его навсегда. таким образом, вы можете сказать, кто принимает меры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...