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

Вопрос по JWT токенам: Есть проект, два ключевых интерфейса в части

авторизации - login и refresh, login взамен на имя/пароль отдает два токена - access и refresh, токены создаются абсолютно одинаково, разница лишь во времени жизни. По истечении времени access токена по классической схеме отправляется refresh и взамен присылается новый access.

1. В этой схеме можно взять refresh токен после истечения access и просто логиниться по нему, это нормально вообще?
2. В интернет статьях о JWT говорится что идея безопасности в том, чтобы можно было токен отозвать, если узнал что он украден, но в существующей у меня реализации я никак его не отзову, потому что он создается и никакой информации о нем не запоминается. (и по некоторым статьям это правильно, потому что jwt - stateless)
3. Я не понимаю вообще где безопасность в этой схеме, украв один из токенов можно какое-то время свободно получать доступ к сервису не вызывая подозрений.
Как сделать это православно, может кто вкратце описать или дать ссылку на хорошее описание?

9 ответов

10 просмотров

refresh нужен, что бы обновлять короткоживущий access token

1. акцесс и рефреш токен отличаются скопом. По рефреш токену нельзя ничего сделать, кроме получения акцесс токена. 2. поверх jwt нужно самому реализовывать механизмы отзыва, используя какой-либо сторедж

Denis Pavlyuchenko
1. акцесс и рефреш токен отличаются скопом. По реф...

и 3. Украв access token действительно можно незаметно получать доступ к сервису пока токен валиден, фишка в том, что бы минимизировать потери путем уменьшения времени жизни токена

Я читал что некоторые отказались от refresh токенов

Denis- Автор вопроса
Denis Pavlyuchenko
1. акцесс и рефреш токен отличаются скопом. По реф...

что значит "скопом"? я же говорю, вот в текущем виде я отправляю refresh токен вместо access, когда access уже истек и у меня всё работает. т.е. если у меня условно access действует 1 час, а refresh 2 дня, то украв refresh злоумышленник может 2 дня ходить на сервис. Мне искусственно нужно в refresh токен писать какой-то отличительный признак, чтобы если в запросе пришёл в поле access: <refreshToken> то сервер его считал невалидным, так это делается обычно?

Denis
что значит "скопом"? я же говорю, вот в текущем ви...

значит вы сделали не так,как нужно. Рефреш токен по определению служит лишь для того, что бы обновлять access, он не может использоваться для доступа к сервису. судя по ``что значит "скопом"?`` вообще мало понимаете, как это должно работать.

Denis- Автор вопроса
Александр
значит вы сделали не так,как нужно. Рефреш токен п...

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

Denis
я же поэтому и спросил, как нужно. я понимаю что р...

вы можете хранить скоупы в jwt, пример можно подсмотреть вот тут: https://nhsconnect.github.io/FHIR-ReasonableAdjustments-API/design_jwt.html, для рефреша вы можете ограничить возможности только обновлением access токена

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Всем привет! Кто нибудь парсил в ручную JSON без библиотек и фреймворков? Есть может ссылки на оптимальный алгоритмы работы с текстом и примеры таких парсеров?
Lem
27
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Добрый день. А shovel'ы можно как-то сконфигурировать в definitions.json? Пробовал что-то вроде: { "users": [ { "name": "agent", "password_hash": "RBCbTzQd...
Aleksey
1
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Карта сайта