JWT токены: формирование payload

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024
  • #soer #itubeteam
    Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
    Спонсорство - donate.s0er.ru
    Сайт платным контентом - soer.pro
    Зеркало для видео Дзен Видео - zen.yandex.ru/...
    GitHub - github.com/soe...
    Чат для программистов - / discord
    Группа ВК - codeart...

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

  • @pinuxman802
    @pinuxman802 Год назад +5

    можешь сделать видео по сетям про NAT tcp/ip про модель osi и все такое и ещё что-нибудь низкоуровневое

  • @kl45gp
    @kl45gp Год назад +6

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

    • @PurpleDaemon_
      @PurpleDaemon_ Год назад +3

      JWT позволяет авторизировать пользователя не трогая базу. А данные сессии обычно приходится из этой самой базы на каждом запросе вытаскивать. Плюс токен может быть выдан одним сервисом, а потребляться кучей других. Еще и на фронтенде у тебя в токене сразу вся нобхзодимая информация (доступы пользователя) для корректного отображения UI есть.
      JWT обычно живут максимум 5-10 минут, и изначально не предназначены для моментального разрыва сессии.

    • @Slavec5
      @Slavec5 Год назад +1

      Как вариант - хранить в базе время разлогина и при авторизации проверки соответствующие добавлять

    • @kl45gp
      @kl45gp Год назад +2

      @@Slavec5 не очень понял. Вот мне надо разлогинить пользователя со всех устройств моментально. Как это сдлеать? Если я поменяю ключ шифрования то я разлогиню всех.

    • @kl45gp
      @kl45gp Год назад +2

      @@PurpleDaemon_ то есть если я хочу резко разлогинить юзера на всех устройствах, мне придется убить его рефреш токен? И при этом 5-10 минут с других устройств еще можно будет зайти?

    • @PurpleDaemon_
      @PurpleDaemon_ Год назад +1

      @@kl45gp да. Можно придумать костыли, но тогда от jwt больше проблем, чем пользы получится. Он просто не задуман для таких случаев.

  • @PurpleDaemon_
    @PurpleDaemon_ Год назад +7

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

    • @diatm1506
      @diatm1506 Год назад

      Я тоже понять не могу. Вырвал из хабры. Еще может использоваться другой алгоритм RS256 - в отличие от предыдущего, он является ассиметричным и создает два ключа: публичный и приватный. С помощью приватного ключа создается подпись, а с помощью публичного только лишь проверяется подлинность подписи, поэтому нам не нужно беспокоиться о его безопасности.

    • @unnamed-xx3kr
      @unnamed-xx3kr Год назад +5

      Тут говорится не про ключи с помощью которых подписывают, а про ключи словаря. Публичные значит объявленные в стандарте(спецификации, RFC). Т.е их должны понимать (зачем вы его использовали) все разработчики которые впервые видят ваш токен.
      А не публичные это только ваши ключи, назначение которых другие разработчики не обязаны понимать.

    • @PurpleDaemon_
      @PurpleDaemon_ Год назад +2

      @@diatm1506 я и говорил про ассинхронные алгоритмы вроде rs256. Ты всё-равно не можешь хранить публичный ключ в токене, так как его подменят на новый публичный ключ и подпишу новым приватный ключём, а ты об этом не узнаешь, так как подпись то валидная. Поэтому публичный ключ должен выдаваться апишкой со строго зафисксированым URL, которая желательно ещё и автоматически обновляет выдаваемые ключи раз в n дней. Это вроде jwks называется. Ну или просто быть зафисксированым где нибудь в переменных окружения, если ротировать часто не собираетесь.

    • @PurpleDaemon_
      @PurpleDaemon_ Год назад

      @@unnamed-xx3kr спасибо за пояснение. Теперь всё ясно.

    • @antonvolkov1794
      @antonvolkov1794 Год назад

      ​@@unnamed-xx3kr это вообще на мой взгляд общепринятые правила хорошего тона в коммерческой разработке на открытых решениях, и встречается далеко не только в rfc

  • @olegbely2781
    @olegbely2781 Год назад +9

    спасибо за вклад в развитие индустрии

  • @sovrinfo
    @sovrinfo Год назад

    Спасибо за видео. Коммент в поддержку!

  • @sogorich
    @sogorich Год назад +10

    Хорошая тема, Соер. Думаю стоит ещё рассказать о том, как их безопасно хранить на фронте, например. А то слишком много людей, видосов и т.д где показывают сохранение в localStorage, что вообще не безопасно.

    • @roosevelt1995
      @roosevelt1995 Год назад

      В шифрованных куки, как ещё. Странный вопрос.

  • @nurlanmukhanov3480
    @nurlanmukhanov3480 Год назад +1

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

  • @diatm1506
    @diatm1506 Год назад +2

    OpenID Connect, OAuth 2.0 и JWT в чем различия?

  • @dev_zloi
    @dev_zloi Год назад +2

    А какая оптимальная длина токена? А то некоторые кладут туда кучу информации и токен получается огромным.

  • @Kadabra1981
    @Kadabra1981 Год назад +1

    Непонятен смысл использования неподписанных токенов - для того чтобы где то в процессе передачи можно было содержимое модифицировать?

  • @romansharipov9488
    @romansharipov9488 Год назад +2

    Только хотел разобратся в теме и тут соер оперативно мне все объяснил. Спасибо.

  • @psevdochlen6544
    @psevdochlen6544 9 месяцев назад

    джот токены?

  • @romanbush5164
    @romanbush5164 Год назад +1

    Соер а как ты относишься к rxjs? (reative x) стоит или нет использовать, является ли это функциональным программированием, как такое дебажить? Хотелось бы твоё мнение

  • @artso003
    @artso003 Год назад +1

    Можешь ещё сделать видео про jwe, мало информации об этом в интернетах

  • @bnidia
    @bnidia 9 месяцев назад

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

    • @v.demchenko
      @v.demchenko 6 месяцев назад

      В токене не передают уязвимую информацию. Пускай читают токен, это ничего не даст.
      Получат айди юзера, имя или то, что ты туда положил как полезную нагрузку.
      Токен позволяет проверить тебя как пользователя который был аутентифицирован и получил токен закодированый токен (не зашифрованный).
      Когда ты попытаешься получить доступ к странице которая пускает только админов, получишь отказ, так как полезная нагрузка, которую ты предоставил для генерации токена имеет роль юзер, а нужен админ.
      Но, допустим ты решил поменять роль на админ в токене, раскодировал его и поменял роль на админ.
      Что бы раскодировать токен, секрет не нужен.
      Токен поменялся и теперь не совпадает с тем который был тебе выдан.
      Когда ты опять постучишься с новой ролью, твой токен проверят с секретным ключем и подписи совпадать не будут.
      Сгенерируют новую подпись с использованием ключа и если она не совпадает, получишь отказ.
      Тут нужно понять то, что при изменении 1 едеиницы, токен полностью меняется.
      Злодей изменивший роль, не ииеет доступа к секрету, а соответственно подпись меняется в токене на клиенте с новой ролью.
      А когда проверяем токен, посредством генерации подписи с секретом.
      Та подпись которая сгенерирована на сервере не будет соответствовать той, которая пришла от юзера, так как изменял ты ее не клиенте без секрета.

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

      @@v.demchenko спасибо, очень хорошо расписал, я бы еще в телеграме обсудил некоторые моменты

  • @alexandrchioroglo5612
    @alexandrchioroglo5612 Год назад +1

    Евгений,а с какой целью вы передаете данные об ордерах используя jwt?

  • @mihdan_dev
    @mihdan_dev Год назад +1

    Актуальная на сегодняшний день тема, спасибо, полезно

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

    спасибо! Очень информативно!

  • @Yurec10
    @Yurec10 Год назад

    Возможно не SOER а Sawyer

  • @ВладиславТрунов-т2т

    Отличное видео!

  • @malerx
    @malerx Год назад

    О, спсб за видос)) Делай вещи.

  • @dchekina7437
    @dchekina7437 Год назад

    Ждем след видео! Спасибо!

  • @ВесёлыйЖираф-ь7ы

    Только по работе требоваться начало, а тут такое классное объяснение, спасибо❤️

  • @unicoxr5tj417
    @unicoxr5tj417 Год назад

    даешь следующее видео)

  • @xarvaksis
    @xarvaksis Год назад

    Спасибо))

  • @vic7871
    @vic7871 Год назад

    Спасибо!

  • @alexandr-v
    @alexandr-v Год назад

    Ничего непонятно без примера.

  • @wlasov
    @wlasov Год назад +1

    Лекция крутая, но мне кажется автор путает понятия аутентификации и авторизации

    • @hutoryanin
      @hutoryanin Год назад

      Кажется говорят: когда кажется - креститься надо)