170 похожих чатов

Гайс привет. Имеется сервис, который выдаёт jwt и сам же

по нему аутентифицирует юзера.

Подскажите, в какую сторону копать если я не хочу чтобы пользователь перелогинивался каждые n минут за новым токеном? Возможно ли сделать это без хранения сессий?
Возможно ли сделать это без refresh-токена используя только один jwt и логику на фронте?

39 ответов

57 просмотров

нет, ничего хорошего из этого не придумаешь

Arkady-Strugatsky Автор вопроса
Ilya
нет, ничего хорошего из этого не придумаешь

Тогда какие самые безболезненные варианты есть?

Ты либо хранишь информацию о времени жизни токена в самом токене и опираешься на нее. Либо хранишь ее в неком сервисе/базе и тем самым переизобретаешь обыкновенные сессии, теряя преимущества жвт.

Arkady-Strugatsky Автор вопроса
Maxim Kolesnikov
Ты либо хранишь информацию о времени жизни токена ...

Информация о жизни хранится в jwt. Вопрос о выпуске нового токена\

Arkady-Strugatsky Автор вопроса

Дополню - насколько норм держать refresh-токен в сессионной куке?

Arkady Strugatsky
Дополню - насколько норм держать refresh-токен в с...

если у тебя уже есть сессия нахуя тебе рефреш? а если вопрос "норм ли пихать рефреш в куки?" то да, норм

Arkady-Strugatsky Автор вопроса
Ilya
если у тебя уже есть сессия нахуя тебе рефреш? а ...

Access просрочился - фронт сходил и забрал новый без перелогина

Arkady Strugatsky
Access просрочился - фронт сходил и забрал новый б...

так у тебя есть сессия уже или нет? если есть сессия то по ней и отдай новый аксес, зачем еще рефреш то

Arkady-Strugatsky Автор вопроса
Ilya
так у тебя есть сессия уже или нет? если есть сес...

Сори за затупы) Кука и будет сессией же

в t.me/fastapi_ru куча раз обсасывали этот рефреш, советую полистать(в поиске просто рефреш вбить вроде достаточно)

Arkady Strugatsky
Дополню - насколько норм держать refresh-токен в с...

Смысл refresh-токена в том, что бы не пользовать его на каждый запрос. Иначе увеличивается риск что его уведут. А ты собрался его засунуть в куку, что бы он вообще на любые запросы к домену (даже если это не API) улетал на сервер.

Kirill Kuzminykh
Смысл refresh-токена в том, что бы не пользовать е...

ну нормальная тема ж, в хттп онли куку его

Arkady-Strugatsky Автор вопроса
Arkady Strugatsky
c

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies

ungenuineer Hor
ну нормальная тема ж, в хттп онли куку его

И нахуа он тогда вообще нужен? То же самое что id сессии. JS его даже прочитать не сможет, что бы самостоятельно вызвать API для обновления аксес-токена

Arkady Strugatsky
Дополню - насколько норм держать refresh-токен в с...

Храни его в Local Storage бразуера, не надо его в куки пихать

Arkady Strugatsky
Алсо он же https-protected

Тогда зачем умные люди придумали эту всю сложность с двумя токенами? Юзали бы один, раз он и так защищён https-ом.

Kirill Kuzminykh
Смысл refresh-токена в том, что бы не пользовать е...

Чобля? Смысл refresh токена перевыпускать access token. Все.

Kirill Kuzminykh
Храни его в Local Storage бразуера, не надо его в ...

Ебушки-воробушки. Вы там совсем ебанулись на отличненько что ли?

Kirill Kuzminykh
Тогда зачем умные люди придумали эту всю сложность...

Потому что разные токены предназначены для разных сервисов.

Kirill Kuzminykh
Тогда зачем умные люди придумали эту всю сложность...

refresh token отправляется на Authorization Server, а access token отправляется на Resource Server.

Alex
Потому что разные токены предназначены для разных ...

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

Kirill Kuzminykh
И зачем тогда в куках каждого запроса передавать р...

так проблема одна - взяли рефреш для хз чего и поэтому гоняем хз как

Kirill Kuzminykh
И зачем тогда в куках каждого запроса передавать р...

1. Потому что система хуево построена и взяли от балды. 2. Потому что BFF бекенд стейтлесс и это компромисс.

Tishka17
так проблема одна - взяли рефреш для хз чего и поэ...

вот так и начинай с начала,и понимаешь что у тебя практики даже с банальными вещами нету ,но зато теперь уроком

Kirill Kuzminykh
И зачем тогда в куках каждого запроса передавать р...

То есть смотри, существует вполне себе реальный и оправданный сценарий, когда мы кладем refresh + access в куки и отправляем их на свой бекенд, а бекенд уже их использует по назначению, потому что мы по каким-то причинам не можем их хранить на бекенде.

Alex
То есть смотри, существует вполне себе реальный и ...

А зачем их хранить на бекенде? Рефреш ведь должен хранить клиент, который использует аксес.

Kirill Kuzminykh
А зачем их хранить на бекенде? Рефреш ведь должен ...

Ну так OAuth клиентом и выступает бекенд, для другого сервиса

Alex
Ну так OAuth клиентом и выступает бекенд, для друг...

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

Kirill Kuzminykh
Ну да, вроде этот случай описан в спеке oAuth. И х...

В общем нужно смотреть на конкретный ценарий, потому что от этого схема аутентификации очень сильно зависит.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта