Ребята, вопрос у меня такой. Refresh токен нужен для того, чтобы получить access? Просто есть сайт и тут есть интересный запрос (POST), там передается refresh токен и в ответ мы получаем access и refresh. Взял обычный токен и проверил его действие - действует 1 час. Подождал чуть больше часа и попробовал отправить такой же запрос передавая refresh токен который он ранее возвращал. Но пишет тип недействительный токен. Почему? Я просто хочу access токен таким образом получить :)
Просто непонятно, смысл он тогда возвращает refresh если он ничего не делает, даже access нельзя получить.
Для правильного вопроса надо знать половину ответа
У refresh-токена (как и у основного) есть время жизни. И, если всё правильно сделано, используется refresh-токен один раз. При обновлении основного токена передаётся новая пара основной+refresh. При попытке повторного использования refresh-токена выдаётся ошибка и, возможно, блокируются все текущие refresh-токены данного пользователя, поскольку такая ситуация может означать, что произошла утечка токена.
Да, в курсе. Я вот проверил время refresh токена и там по сути даже секунды нет :д
Я вот просто зашел на сайт и в запросе увидел адрес /refresh. Там передается refresh токен, скорее всего старый, в ответ получаем access и refresh и я этот refresh скопировал, подождал пока кончится сессия access и в итоге не смог получить новый :)
Это настройка конкретного сервера. Обычно рефреш живёт дольше основного токена, но ничто не мешает ставить рандомные времена истечения.
Почему вообще нужны два токена, а не один? [Много техического бла-бла-бла, которое сможешь сам нагуглить], подытоживая: потому что второй - костыль для первого и такая технология завоевала популярность.
А я кинул этот refresh на JWT и мне показал он время вообще 1 секунду :)
Непонятно, зачем он тогда его возвращает. Получается, нельзя получить access зная refresh?
0x80070005, на самом деле технически рефреш-токен не обязан содержать в себе какие-либо данныйе, правдивые или нет, т.е. рефреш-токен в отличие от основного - это по сути просто ключ в базе данных ассоциированный с сессией пользователя. И данные по времени его жизни должны храниться на сервере. Ничто конечно не мешает также писать эти данные и в него.
Так что тут одно из двух: 1. время действительно 1 сек - это значит что хозяин сервера решил, что часа авторизации достаточно и вот таким вот костылём реализовал сие ограничение. 2. время в токене врёт и на сервере реальное время иное.
Aetae, печально! Я думал при помощи него буду получать access, чтобы данные тягать. В инете просто нашел, что если не знаем access, но знаем refresh, то можно получить access. В итоге нифига :)
Так что тут одно из двух: 1. время действительно 1 сек - это значит что хозяин сервера решил, что часа авторизации достаточно и вот таким вот костылём реализовал сие ограничение. 2. время в токене врёт и на сервере реальное время иное.
там ещё могут и другие варианты быть, например как делал я, вшиваю иногда в refresh хэш айпи адреса последней авторизации, если он изменился то токен не валиден, придётся логинится