Refresh JWT FastAPI | Обновление access токена при помощи refresh токена

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 79

  • @ИванРязанцев-н1м
    @ИванРязанцев-н1м 7 месяцев назад +7

    Лайк, перед просмотром🎉

  • @one_dev
    @one_dev 7 месяцев назад +2

    Как всегда на высоте. Автор сам того не замечая, в виду своей квалификации, помимо раскрытия основной темы ролика, показывает довольно много фишек или нюансов работы с инструментами или IDE, которые я благополучно подмечаю для себя) Спасибо огромное🥰🥰🥰

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      Кайф! Я рад, что вам есть, что подцепить из ролика! 🥰🔥

  • @Athlon5200plus
    @Athlon5200plus 6 месяцев назад +2

    Хорошо получается учить. Я Python не знаю, вообще не бэкендер, но да же мне понятно. Мой заказ: видео о разделении пользователей по правам доступа :)
    Ставлю лайк. Не ставят те, кто не хотят чтобы эти видео просматривали другие :D

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      КайФ, спасибо большое! Рад, что вам понравилось и было понятно 😊
      Заказать тему видео можно через бусти (на уровне Профессионал)

  • @Alex-zl7wg
    @Alex-zl7wg Месяц назад +1

    Превосходная подача материала! Всё подробно и в то же время ничего лишнего. Преподавать ваше призвание! Спасибо за курс.

    • @SurenKhorenyan
      @SurenKhorenyan  Месяц назад

      Спасибо большое! Очень приятно 🥰

  • @podjigalgoroda6523
    @podjigalgoroda6523 7 месяцев назад +2

    Благодарю за видео!

  • @osky7878
    @osky7878 17 дней назад +1

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

    • @SurenKhorenyan
      @SurenKhorenyan  17 дней назад

      Пожалуйста!
      Видимо, тема не очень актуальна 😢

  • @ОльгаПлатонова-д4з
    @ОльгаПлатонова-д4з 6 месяцев назад +1

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

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Кайф, пожалуйста! Рад, что вам нравится!
      Обязательно будет продолжение 😊

  • @Роман-р3д7к
    @Роман-р3д7к 6 месяцев назад +1

    Огромное спасибо за то, что раскрываете тему авторизации и аутентификации! ❤ Для меня тема крайне мозговыносящая, несмотря на кучу просмотренных материалов. Ваши ролики позволяют, хоть и немного, но структурировать это в голове. Очень хотелось бы больше роликов на эту тему!

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Кайф, пожалуйста! Продолжение обязательно будет. Очень рад, что вам нравится

  • @godgiven994
    @godgiven994 7 месяцев назад +1

    Супер тема! Спасибо, Сурен!

  • @ufc_uz6
    @ufc_uz6 7 месяцев назад +1

    Спасибо вам от души❤

  • @storlay
    @storlay 3 месяца назад +1

    Спасибо за подробный разбор этой темы)
    Было интересно, как это всё под капотом работает

    • @SurenKhorenyan
      @SurenKhorenyan  3 месяца назад

      Пожалуйста! Рад, что вам понравилось

  • @gauyful
    @gauyful 6 месяцев назад +1

    Очень приятно слушать и смотреть, продолжайте!

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Кайф, спасибо! Обязательно буду продолжать

  • @cerber596
    @cerber596 4 месяца назад +1

    Крутой видос. Очень нужная информация. Перелопатил кучу статей и везде информация очень абстрактная. Хочу дополнить, что ещё бывает практика, что при обращении на refresh, вместе с access токеном заменяют и refresh токен

    • @SurenKhorenyan
      @SurenKhorenyan  4 месяца назад

      Спасибо!
      Ага, я в видео говорил, что при желании можно и свежий рефреш отдавать

  • @АндрейРабота-ь3ж
    @АндрейРабота-ь3ж 2 месяца назад

    Спасибо за урок!

  • @user-fm7jl3ll9n
    @user-fm7jl3ll9n 7 месяцев назад +2

    А что нибудь по паттернам и чистой архитектуре будет?

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад +1

      Может быть, когда-то и будет.. ждём. Ускорить выход роликов можно через бусти

  • @Паша-н9ь
    @Паша-н9ь Месяц назад

    спасибо! круто объясняешь!

  • @TzemOn
    @TzemOn 6 месяцев назад +1

    Сурен, огромное спасибо за курс, есть только одно замечание.
    Такими темпами MVP будет достигнуто за полтора-два года от первого выпуска?
    Хотелось бы получить предсказуемый выход роликов, поскольку несмотря на очень качественный подход полноценный шаблон для своего приложения хотелось бы получить чуть быстрее.

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Пожалуйста!
      Да, так как я свободно выбираю тему, финал не близко. Ускорить выход роликов, а также задать направление можно через бусти. Там уже есть пара тем в очереди, спешите занять ближайшие позиции 🙂

  • @mypsevdonim
    @mypsevdonim 7 месяцев назад +1

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

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад +1

      Привет! "надеюсь прочитаешь" будто у меня комментариев так много, что легко пропустить 😁
      В ближайших планах именно такого нет, но близкое надо будет рассказать

    • @mypsevdonim
      @mypsevdonim 7 месяцев назад +1

      @@SurenKhorenyan Буду очень благодарен

  • @awesomeex5821
    @awesomeex5821 4 месяца назад +1

    Подача классная, но как по итогу это все применять, почему нет примера с базой данных / регистрацией и тд?

    • @SurenKhorenyan
      @SurenKhorenyan  4 месяца назад

      Спасибо!
      А как вы JWT с БД применять собираетесь? Я уже рассказывал, что JWT как раз таки self-contained, мы его в бд не складываем.
      Регистрация это уже на ваше усмотрение, можно просто при первом обращении создавать учетку, можно форму регистрации делать. в сегодняшнем ролике показал как регистрироваться через FastAPI-Users

  • @guselnikovgeorgii7355
    @guselnikovgeorgii7355 7 месяцев назад +1

    Сурен, вопрос, а где лежит сам этот jwt access/refresh токен у клиента, могу ли я его увидеть через консоль разработчика, или он лежит где то глубже в самом браузере? И еще вопрос, как реализовать логаут с такими токенами?

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      Да, лежит на клиенте. Часто в local storage кладут. Ещё можно просто в куки засовывать, тут зависит от вашей реализации. Логаут простой: клиент забывает токен и всё. Если надо прям запретить использовать этот токен, то в конце ролика показывал поле jti, по нему вносить в блеклист

  • @MAKS19961204
    @MAKS19961204 7 месяцев назад +1

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

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      При доступе к железу никакие защиты не помогут. А если тырить трафик, то всё же access гораздо чаще ходит, чем refresh

    • @MAKS19961204
      @MAKS19961204 7 месяцев назад +1

      @@SurenKhorenyan чем более надёжным хочешь сделать аксес (коротким по жизни) тем чаще будет ходить рефреш, что приводит к обратной цели - падению секурности.
      Короче все как всегда 😁😁 обмазались и радуемся

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      ​@@MAKS19961204ну, тут да. Такие современные веяния. В идеале просто куку ставить, но если там трафик потырить, то тоже нет спасения. Спасибо что https хоть какую-то надёжность предоставляет

  • @x-user-agent
    @x-user-agent 4 месяца назад +1

    *мем мужик у доски доказывает* 🤯 спасибо) только я не понял зачем такие сложности с двумя токенами... точнее понятно - безопасность, но оба токена доступны одинаково и соответсвенно если есть возможность украсть то воруются оба, а потом перевыпускать access token через refresh ничего не мешает... или я чего-то недопонял, или чего-то не хватает 🤷

    • @SurenKhorenyan
      @SurenKhorenyan  4 месяца назад

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

  • @0jigrande
    @0jigrande 4 месяца назад +1

    Сурен, ты говоришь, что FastAPI JWT Auth устарела и не обновляется.
    А как насчет FastAPI Users. Почему ее нельзя использовать?

    • @SurenKhorenyan
      @SurenKhorenyan  4 месяца назад +1

      Привет! Да, можно. Только это более сложная либа, более комплексная. Ролик когда-то будет. Я снимал его в прошлом месяце, материал застрял в монтаже. Когда-нибудь выйдет, может быть даже в этом месяце.

  • @popcorn_833
    @popcorn_833 6 месяцев назад +1

    Привет, спасибо за видео!
    Можешь подсказать какую админку использовать с FastAPI

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Привет, пожалуйста!
      Сам не пробовал никакую, слышал про FastAPI-Admin и SQLAlchemy-Admin, можете попробовать и рассказать, что больше понравилось 🙂

  • @karasik7015
    @karasik7015 7 месяцев назад +1

    ура, спасибо! )

  • @awesomeex5821
    @awesomeex5821 4 месяца назад +1

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

    • @SurenKhorenyan
      @SurenKhorenyan  4 месяца назад +1

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

  • @Chel1k7
    @Chel1k7 День назад +1

    Где хранить токены?

    • @SurenKhorenyan
      @SurenKhorenyan  День назад

      На клиенте в куках или local storage

  • @АндрейТарев-т7б
    @АндрейТарев-т7б Месяц назад

    Сурен, подскажи пожалуйста, когда access токен сгорает, как происходит обновление токена через рефреш, т.е. это фронтенд определяет что токен сгорел и дергает эндпоинт с /refresh/?

    • @SurenKhorenyan
      @SurenKhorenyan  Месяц назад +1

      Угу, фронт сначала делает запрос как обычно, получает ошибку, что токен сгорел, и дёргает refresh

    • @АндрейТарев-т7б
      @АндрейТарев-т7б Месяц назад

      @@SurenKhorenyan спасибо)

    • @SurenKhorenyan
      @SurenKhorenyan  Месяц назад

      @@АндрейТарев-т7б пожалуйста! 🥰

  • @MB-mi4ed
    @MB-mi4ed 7 месяцев назад +2

    Контент супер! Но очень жаль, что нет ссылки на git

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад +1

      Спасибо большое! Ой, реально забыл добавить. Обновил описание, теперь есть ссылка 🥰

    • @MB-mi4ed
      @MB-mi4ed 7 месяцев назад +1

      @@SurenKhorenyan Спасибо огромное! Внимательно смотрю за Вашим каналом, т.к. тема очень близка. И должен сказать, узнаю что-то новое. Успехов Вам !

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      @@MB-mi4ed пожалуйста!
      Кайф, спасибо! Рад, что вам нравится 😊🥰

  • @intensy1605
    @intensy1605 6 месяцев назад +1

    В чем смысл? При перехвате злоумышленник получает оба токена и может спокойно генерировать новые токены доступа. Этот вариант использования jwt не практичен. Для этого требуется более надежный способ

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад

      Любопытно. А какой вариант вы рекомендуете?

    • @USER_____Oo_____USER
      @USER_____Oo_____USER 5 месяцев назад

      😂Смешно)))

    • @intensy1605
      @intensy1605 4 месяца назад

      @@USER_____Oo_____USER О чем ты?

  • @coryphoenixxx8238
    @coryphoenixxx8238 7 месяцев назад +1

    Надо видос о применимости вообще, потому что вокруг жвт какой-то каргокульт, пихают везде, даже там где кукисов хватает с головой.
    Ну и классика: ruclips.net/video/pYeekwv3vC4/видео.html

    • @SurenKhorenyan
      @SurenKhorenyan  7 месяцев назад

      Вы абсолютно правы, в общении браузера (клиента) с беком (сервером) зачастую достаточно куки. А вот при machine to machine общении надо использовать либо статик токены, либо что-то такое, типа JWT.
      Плюс тут есть полезная нагрузка.
      К сожалению, некоторые технологии, которые нам очень не нравятся (например, джаваскрипт, или нода) существуют, потому что они кому-то нужны. Даже если использование неправильное.
      К слову, REST API на самом деле значит совсем другое, и подразумевает HATEOAS, а не перекладывание JSON объектов

    • @coryphoenixxx8238
      @coryphoenixxx8238 7 месяцев назад +1

      ​​@@SurenKhorenyan у меня в пэте есть тг-бот, апишка и сайт. По идее взаимодействие тг-бота с апишкой это machine to machine, но я в aiohttp клиенте просто заюзал сессии через кукисы. Так и не понял потенциальных проблем. Для сложных систем с auth-сервером, где oath2 имеет смысл, jwt нужен, наверное

    • @SurenKhorenyan
      @SurenKhorenyan  6 месяцев назад +1

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