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

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

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

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

9 ответов

15 просмотров

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 токена

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно 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
Карта сайта