Что такое JWT и как его создать

preview_player
Показать описание

В этой статье мы узнаем:
- Что такое JWT
- Из каких частей состоит JWT
- Как создать JWT
- Как генерируется подпись в JWT
- Чем хорош JWT
- Безопасноcть JWT
- Советы по применению JWT
- Что такое refresh token

4CQwVszH9pSaL55hkDt
Рекомендации по теме
Комментарии
Автор

Спасибо за видео! Интересно и констурктивно подана информация. Теперь и правда хочется послушать про OAuth и OpenID 😊

valerysilakov
Автор

после этого видео необходимо сравнение session-cookis vs jwt)

nikitabbrv
Автор

🤔🤔🤔
Не очень понятно как связаны auth server и app server, а именно - как сопоставляется access_token с пользователем в app server. Если в JWT access_token'а передается id пользователя, то это значит, что id пользователя хранится 2 раза, в auth server и в app server. Или у них общая БД? Какие данные хранятся в БД auth server'а, а какие в БД app server'а? При рассуждении о мастабируемости можно приплести сюда третий application server, который будет заниматься только данными пользователя.
🗨🗨🗨
Моё представление как должно быть сделано:
1) auth server хранит у себя в БД: логин, хэш пароля, идентификатор, время последнего входа, дата регистрации и тд, роль (при необходимости необходимые таблицы для ролей и разрешений для этих ролей)
2) auth application 1 (микросервис данных пользователей) хранит у себя в БД: идентификатор пользователя и прочие данные пользователя, которые не связаны с аутентификацией и авторизацией (пол, фио, номер телефона, почту...).
3) auth application 2 (микросервис определенной бизнес-задачи) хранит у себя в БД: все остальные бизнес-сущности. У сущностей, связанных с пользователем сохранен uuid пользователя.
4-*) auth application n (микросервис n-ой бизнес задачи) по аналогии с auth application 2
👁‍🗨👁‍🗨👁‍🗨
Итого: из дублирующихся данных только uuid пользователя во всех микросервисах, можно легко масштабироваться, создавая другие микросервисы, которые будут использовать этого пользователя. Единая система аутентификации. С авторизацией/правами пусть будет всё внутри auth сервера (чтобы не усложнять, а так для каждого микросервиса, наверное, нужны свои частые виды прав и разрешений)

ShulV
Автор

Тема JWT и микросервисов не бьіла затронута, как по-моему очень важная тема

limeniye
Автор

канал заебись💥 очень хотел бы услышать про OAuth, и про тему разницы хеширования и кодирования

futureghost
Автор

Ну раз дело до JWT дошло, то давай про сервисы авторизации, OAuth, OpenID Connect всякие защиты аля PKCE

HeyWhoTheFuckAreYou
Автор

Несколько нюансов:
1) если напихать слишком много данных в клэйм токена, то токен может превысить лимит хэдера в HTTP запросе, так что размер JWT все-таки конечный, лично сталкивались и приходилось лимитировать...
2) по рефреш токену - тема не раскрыта, кто должен мониторить за экспаирлися токен или нет?
* если клиент, то это должен быть какой-то крон на клиентской стороне (допустим раз в минуту) который по тригеру будет рефрешить токен, но тогда нужно мониторить активность юзера и отрубать ежеминутный крон как только юзер стал не активным.
* или клиент всегда делает запрос с токеном что у него сейчас есть и в ответ получает 401 потому что токен за экспаирился? и только в этом случае клиент рефрешит аксеес токен? а что с запросом который уже за фэилился? это нужно тогда иметь какой-то локальный стак на клиенте, куда складывать все отправленные запросы чтоб в случае с 401, можно было за рефрешить токен и пере повторить запрос из сохраненного стака? + менеджить стак чистя его при успешых запросах
* может еще какие-то варианты есть?

Как правильно то?

VadimBryksin
Автор

В чем смысл refresh_token если мы его также с клиента передаем на сервер как и access_token?
Вот если мы refresh запишем в куку как httponly и secure, то смысл появляется, так как сервер сам с ним взаисодействует и это безопасно потому что с клиента нет к нему доступа.

spadar
Автор

Что за звук, который играет в заставке в первую секунду? Очень знакомый, но не могу понять из какой игры ... Starcraft ?

irker
Автор

Хотим перевод статьи про кодирование и шифрование !

iijjscp
Автор

Если по итогу данные в JWT кодируются с помощью секретного ключа, который есть только на сервере и у пользователя, то почему по нему не безопасно передавать данные паспорта?

markerok
Автор

— Ну, слушайте статью из мира IT (LISTEN IT)
...5 минут спустя...
— Ну, посмотрите на экран
😅

yandoru
Автор

Большой интерес в комментариях — проснулся

yandoru
Автор

"Данные в JWT закодированы и подписаны, но не зашифрованы.". Зачем вообще говорить что что-то закодировано? Абсолютно вся инфромация в компьютерных системах закодирована так или иначе.

vxzkjje