Size: a a a

Clojure — русскоговорящее сообщество

2019 October 01

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
не понятно, какая разница один запрос или много.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
то есть, если на запрос пришла ошибка, что токен поэкспайрился нужно пойти с рефрешем и взять новый аксесс
источник

A

Artem in Clojure — русскоговорящее сообщество
Это в случае если refresh токен не меняется. А если при запросе acess token’а revok-ать refresh, и выдавать новый (по спеке oauth 2.0 так можно делать), то получается плохая ситуация.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
я все-равно не понял проблемы, и зачем ревокать рефреш?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
В любом случае какой-то рефреш будет, а когда протухнет аксесс надо сходить за новым.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Понятно, что если запросов с аксессами много, то лучше обновлять токены заранее, не дожидаясь, когда всё отвалися. И все разом пойдут себе новые токены заказывать.
источник

A

Artem in Clojure — русскоговорящее сообщество
Maxim Penzin
я все-равно не понял проблемы, и зачем ревокать рефреш?
Ок. Допустим что рефреш не ревокается.
Идёт несколько запросов на сервер.
Всем прилетает 401,
все дружно идут получать новый acess-token по рефрешу.
auth server в таком случае должен всем запросам вернуть одинаковый access, так? И вообще, при всех запросах с grant_type=refresh, если имеется живой acess, то выдавать его, и не issue-ить новый?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Artem
Ок. Допустим что рефреш не ревокается.
Идёт несколько запросов на сервер.
Всем прилетает 401,
все дружно идут получать новый acess-token по рефрешу.
auth server в таком случае должен всем запросам вернуть одинаковый access, так? И вообще, при всех запросах с grant_type=refresh, если имеется живой acess, то выдавать его, и не issue-ить новый?
auth сервер может отдавать текие токены, как сам захочет.
Как я писал в предыдущем письме, если токе6нов действительно много, то лучше рефрешить их не кучей а немного раньше реального экспирейшена, слегка рандомизировав время, чтобы не нагибать излишне авторизационный сервер.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Ну и это сейчас все рассуждения про коня в вакууме. И лучше смотреть на реальную ситуацию, конечно.
источник

A

Artem in Clojure — русскоговорящее сообщество
Ситуация пока что в вакууме в любом случае)
Мы сами пишем и сервер и клиента к нему (веб), и не можем придумать как избежать проблем с несколькими запросами.
Ведь даже если рефрешить токен заранее, и даже попытаться сделать чтобы табы браузера общались через localStorage на тему того стоит ли идти обновлять токен, все равно может возникнуть ситуация когда пользователь откроет сайт в двух табах, закроет браузер, и потом, когда снова откроет браузер, обе табы пойдут рефрешить токен, и в одной из таб окажется уже невалидный токен. И это вроде как решается флагом в localStorage и его Event’ами, но они не поддерживаются в Safari. А ещё со всеми остальными запросами наверное нужно что-то делать, в очередь какую-то добавлять, или что-то вроде того.
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
А можно кратко зачем refresh токен??
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
чтобы продлить старый токен без ввода пароля
источник

A

Artem in Clojure — русскоговорящее сообщество
Для того чтобы получить пару access + refresh токен, в которой acess - новый (старый ревокается), а refresh по спеке может быть и новым и старым
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
у нас была такая тема, и беда была в том, что фронт шлет 20 запросов, и где-то на середине токен кончился
источник

A

Artem in Clojure — русскоговорящее сообщество
Ivan Grishaev
у нас была такая тема, и беда была в том, что фронт шлет 20 запросов, и где-то на середине токен кончился
Ну да, я как раз про это
источник

MV

Max Vasiliev in Clojure — русскоговорящее сообщество
Тоже с такой проблемой сталкивался. Повезло, что не успели нормально доделать время жизни токенов.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
и какими-то костылями мы это обошли, только не помню как
источник

MV

Max Vasiliev in Clojure — русскоговорящее сообщество
блин, я думал решение классное предложишь 🙂
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Кажется @achikin это чинил, спроси у него
источник

A

Artem in Clojure — русскоговорящее сообщество
@achikin расскажите пожалуйста как вы это чинили 🙃
источник