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

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

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

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

39 ответов

65 просмотров

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

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. И х...

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Oh sorry did you want it in Gunter's chains?
Martin Rys
15
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта