Laravel passport - refre sh token проблема с плохим соединением - PullRequest
2 голосов
/ 10 марта 2020

На Laravel есть API, который использует Laravel Паспорт для аутентификации. Все работало хорошо с настройками по умолчанию. Затем мы решили изменить срок действия токена доступа на 1 день и 1 месяц соответственно. Это вызвало проблему с токеном refre sh. Пример: срок действия маркера доступа истек, и приложение отправляет запрос refre sh token в API. Тогда приложение теряет inte rnet соединение и не может получить новый токен. (Сервер отправляет новые токены, но приложение недоступно). После восстановления соединения inte rnet приложение отправляет новый запрос refre sh, но получает 401. Таким образом, приложения должны получить новый код из API для аутентификации пользователя. Я не думаю, что это хорошая идея, чтобы заставить пользователя войти в систему каждый день. Какие-либо предложения? Может быть, есть какой-то способ, как "рукопожатие", чтобы решить эту проблему? Я имею в виду refre sh токен только после подтверждения, что приложение получило новые токены.

1 Ответ

2 голосов
/ 17 марта 2020

Если я правильно понимаю ваш вопрос, вы говорите, что у вас изначально есть пара Access Token1, Refresh Token1, а когда срок действия Access Token1 истекает, вы пытаетесь запросить новый Access Token, используя Refresh Token1.

Теперь по какой-то причине вы не можете получить эту новую пару Access Token2, Refresh Token2, так что же делает пользователь ?. Ну, вы видите это с точки зрения потребителя. Если вы видите тот же сценарий с точки зрения сервера Oauth2.

Сервер не знает, если вам не удалось получить токен или вы получили его и не смогли сохранить. Задача сервера состояла в том, чтобы сгенерировать новый токен доступа на основе вашего действительного токена refre sh. И как только он создает новый токен доступа, он лишает законной силы старый refre sh токен. Это стандартная реализация Oauth2.

Вы можете попытаться сделать так, чтобы старый refre sh токен не был немедленно отменен при создании нового маркера доступа. Но это создает возможность повторных атак.

Следовательно, стандартной практикой является повторный вход пользователя в систему.

...