я использую bshaffer / oauth2-сервер PHP библиотека для реализации сервера oauth2.
В настоящее время я использую токен доступа для проверки подлинности при каждом запросе и токен обновления при истечении срока действия токена доступа, поэтому, если токен обновления не истек, сервер возвращает новый токен доступа. Если срок действия маркера обновления истек, возвращается следующая ошибка:
{«error»: «invalid_grant», «error_description»: «Срок действия маркера обновления истек»}
,и после этого на стороне клиента пользователь автоматически выходит из системы.
Я хочу реализовать стандартный «тайм-аут сеанса PHP» с Oauth2. Таким образом, мои токены будут недействительными через XX минут после последнего запроса (если в это время нет запросов), то есть я буду продлевать срок действия моих токенов по каждому запросу в течение XX минут.
Я хочу, чтобы время истечения токена обновления соответствовало моему последнему запросу, поэтому предыдущая ошибка будет возвращена через двадцать минут бездействия пользователя. Может кто-нибудь сказать мне, что является наилучшей практикой для реализации этого? Я думал посылать токен обновления в заголовке при каждом запросе и вручную продлевать срок его действия в базе данных, но не знаю, достаточно ли это безопасно.
Это то, что обрабатывается Oauth2, или не должно быть реализовано в системе, использующей вызовы API?
Кроме того, мне интересно, как этот случай может быть обработан в oauth2?
Заранее спасибо.
Это не так, как работает OAuth2.
OAuth2 не заботится о вашей сессии или пользователях или о чем-либо еще. Все, что он делает, это выпускает токен, который действует в течение настраиваемого промежутка времени. OAuth2 выполняет авторизацию на уровне приложений и не имеет ничего общего с пользовательскими сессиями.
Хотя не стоит делать то, что ты хочешь делать. Но есть два способа достижения функциональности выхода из системы: