JWT. Часть 3. Сервер

  Рет қаралды 53,079

JavaScript.Ninja

JavaScript.Ninja

Күн бұрын

Пікірлер: 76
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
Прошу прощения за скачки громкости и проблемы со звуком в начале и в конце видео. Небольшой технический "сюрприз" от свежего билда Windows 10 Insiders preview
@olehbrony6506
@olehbrony6506 6 жыл бұрын
а можно пожалуйста рассказать, как ты устроил рабочее пространство? у тебя файлы буквально общаются между собой, в комментах приходят ответ (на 11:00, например). как ты настроил так visual code? p.s. и можно ли так настроить web storm?
@meldtown
@meldtown 4 жыл бұрын
​@@olehbrony6506 це все робить wallaby.js
@evisotskiydev
@evisotskiydev 5 жыл бұрын
Я просто в шоке - так быстро и непринуждённо размышлять и ориентироваться по коду - это высший уровень. Есть к чему стремиться. Удивлён что у тебя так мало подписчиков
@StanislavObrazcoff
@StanislavObrazcoff 5 жыл бұрын
крутой коддинг, быстрое объяснение сложной темы на живом примере, бонус: новые фишки IDE от Ильи!
@vitaly7491
@vitaly7491 5 жыл бұрын
Большое спасибо, контент очень высокого качества!
@Roman-ex6to
@Roman-ex6to 5 жыл бұрын
Это самое лучшее, что я смог найти на просторах интернета. Спасибо
@mazZZzilaplayer
@mazZZzilaplayer 6 жыл бұрын
Только вчера решил ознакомиться и наткнулся на ваши первые 2 видео. Думал, что вышли давно, а значит новую часть не стоит ждать. Зашёл к вам на канал - а там новое видео, добавленное 10 минут назад, с 3 частью
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
Ирвин Уэлш приятно делать людям сюрпризы :)
@alexkazimir3835
@alexkazimir3835 6 жыл бұрын
Тесты с wallaby супер, всегда что-то полезное из твоих видео. Благодарность
@akass4010
@akass4010 6 жыл бұрын
Жаль дорогой
@BuyRak-rf1gp
@BuyRak-rf1gp Жыл бұрын
Случайно попал на видео но могу сказать: "Хорошо, правильно, а главное актуально в комерции".
@u-u-u-user
@u-u-u-user 5 жыл бұрын
Привет. Какое расширение сразу подсвечивает тебе результат тестов, результат на получение при "//?" и в модулях время выполнения запросы (если я не ошибаюсь)?
@JavaScriptNinja
@JavaScriptNinja 5 жыл бұрын
это wallaby
@ne4to777
@ne4to777 5 жыл бұрын
Илья, полезное дело делаешь. Спасибо.
@TimurSevimli
@TimurSevimli 5 ай бұрын
Спасибо за знаний Илья! Ответь пожалуйста, а где ты хранишь refreshToken на клиенте? Не особо понимаю как ты получаешь refreshToken на теле (body) запроса в сервере
@azizkudaikulov993
@azizkudaikulov993 3 жыл бұрын
Круто! спасибо
@Owner0
@Owner0 Жыл бұрын
класно умеешь писать тесты. А если тесты не писать то это все по идее в постмане надо делать?
@larryunderwood615
@larryunderwood615 6 жыл бұрын
Илья, огромное спасибо за труд)) крайне полезное видео! но ты ОЧЕНЬ медленно говоришь, приходится ускорять до 1.75x)
@РоманВоловик-з3д
@РоманВоловик-з3д 5 жыл бұрын
@MrJloa
@MrJloa 3 жыл бұрын
3x
@deni5n
@deni5n 4 жыл бұрын
Видео интересное, но как мне кажется немного поверхностное для расказа про авторизацию. (по состоянию на сегодня в гите этот код собрал 69 звезд, при том, что в коде ошибки обработаны "методом страуса" В часности, что-то нужно делать серверу в маршруте /post, если приехал "левый" refreshToken, тоже самое для user/id)
@valeron_1337
@valeron_1337 2 жыл бұрын
Мне тоже кажется что ограничиваться 404 статус кодом при получении запроса с не верным рефреш токеном, как то не достаточно. В первом видео говорилось (14:30) что в таком случае реальному пользователю придется перелогиниватся, в процессе чего он получит новую пару токенов (пока понятно) что приведет к тому что краденые токены хакера станут не корректными (это не понятно). Каким именно обраозм краденые токены хакера должны стать не валидными если мы всего навсего возвращаем 404 при запросе на /refresh с левым токеном?
@yakovlev_io
@yakovlev_io 5 жыл бұрын
Спасибо огромное!
@kovalenkoam
@kovalenkoam 3 жыл бұрын
Можно ли применять это решение для Express.js? и что необходимо пересматривать? Я так понимаю, что надо midleware по другому как-то подключать... и что-то еще, но не понимаю до конца что именно . Если не сложно - подскажите, пожалуйста.
@Antonio-fm1sq
@Antonio-fm1sq 3 жыл бұрын
Спасибо
@АлександрКосяк-ь3ь
@АлександрКосяк-ь3ь 4 жыл бұрын
Возможно я пропустил, не понятно сколько будет жить обычный токен. И не хватает метода обработки стандартных запросов с верификацей токена. И еще вопрос, если при логауте удалить все токены, получится пользователь разом разлогинится на всех устройствах, это необходимо? А так инфа классная, спасибо!
@JavaScriptNinja
@JavaScriptNinja 4 жыл бұрын
Когда вы выпускаете токен, вы можете добавить в него поле, которое будет указывать когда он протухнет
@gigabek
@gigabek 5 жыл бұрын
А есть ли wallaby для python. Я найти не могу.
@slaviksemen4919
@slaviksemen4919 9 ай бұрын
что бы ты был здоров и твои дети счастливы(только если ты не голосовал за Путина). Это первый нормальный курс с понятными обьяснениями и примерами👍👍👍
@tryhard6826
@tryhard6826 5 жыл бұрын
Получается, все равно, если refresh token попал не в те руки, он может им бесконечно получать себе новые пары токенов. И тут можно либо делать так, чтобы при логине другие refresh токены удалялись, но тогда нельзя будет логинится с разных машин. Так как при угоне пары токенов, юзер логинится, получает свою новую пару токенов, а в старой паре ведь была получена новая пара токенов и multiples refresh tokens are valid. И теперь сервер будет думать, юзер залогинился со второй машины.
@JavaScriptNinja
@JavaScriptNinja 5 жыл бұрын
В системах есть кнопка " разлогинить меня отовсюду". Или часто нажатие кнопки logout удаляет все существующие сессии если стояла галка "помнить меня"
@tryhard6826
@tryhard6826 5 жыл бұрын
​@@JavaScriptNinjaЧасто пользователи просто не обращаются внимания на logout кнопку. Они просто регаются, делают что им нужно и забывают. В этом случае, можно ли как-то к токену привязать какие-то данные о машине, с которого был логин?
@JavaScriptNinja
@JavaScriptNinja 5 жыл бұрын
@@tryhard6826 можно
@kusov4748
@kusov4748 4 жыл бұрын
А почему refresh token вы храните в бд? Суть JWT же в том что не надо нигде ничего хранить.
@JavaScriptNinja
@JavaScriptNinja 4 жыл бұрын
Посмотрите предыдущие серии. Как вы будете инвалидировать некорректные рефреш токены? И суть jwt совсем не в этом. Суть jwt в возможности валидации того, что токен был выпущен нужной стороной, не более. Рефреш токены вообще не являются jwt
@user-san-chous
@user-san-chous 3 жыл бұрын
Вопрос ниже снимаю) ведь вроде дошло, что рефреш-токен храниться же в примере в БД, что на практике, наверное, не так часто применяют. Что-то я не могу добиться на своем учебном проекте и найти подтверждения того, что рефреш-токен используется только один раз. Это было бы замечательно в реальности, но по факту они ведь для клиента остаются все равно рабочими до истечения срока годности. Соответственно вроде и нет возможности удалять токены при логауте на сервере, а только на клиенте(( Встречаю рекомендацию делать черный список, например, в редисе, так как способа "убить" токен нет(( Просто зачем тогда в видео такой тест, в котором проверяется одноразовость рефреш-токена?
@sergeys4732
@sergeys4732 2 жыл бұрын
Так рефреш одноразовый и есть ) сервис тебе при рефреше возвращает новый рефреш токен, значит старый уже не актуален
@valeron_1337
@valeron_1337 2 жыл бұрын
31:54. А не должны ли мы при получении уже отозваного рефреш токена от реального пользователя (после того как тот был у него украден и уже использован хакером) дополнительно еще отозвать все рефреш токены чтобы выкинуть хакера? Или же это лучше сделать на клиенте, то есть при получении 404 на запрос /refresh - отправить последующий запрос на /logout? @JavaScriptNinja
@valeron_1337
@valeron_1337 2 жыл бұрын
Хотя нет, тогда хакер с тем же не валидным рефреш токеном сможет постоянно удалять на сервере все сесси для пользователя чей рефреш токен он украл.
@valeron_1337
@valeron_1337 2 жыл бұрын
В первом видео говорилось (14:30) что в таком случае реальному пользователю придется перелогиниватся, в процессе чего он получит новую пару токенов (пока понятно) что приведет к тому что краденые токены хакера станут не корректными (это не понятно). Каким именно образом краденые токены хакера должны стать не валидными если мы всего навсего возвращаем 404 при получении запроса на /refresh с левым токеном в боди?
@akass4010
@akass4010 6 жыл бұрын
А чем rc зашел больше чем config(package). И как ты с таким спобом мока подключаешь настояющую БД?
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
akass понятия не имею о каком пакете идёт про config
@akass4010
@akass4010 6 жыл бұрын
Javascript.Ninja я про тот где у тебя под разные окружения свой конфиг лежит. А про мок ответишь?
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Досмотрел до 42:30
@eamarc
@eamarc 3 жыл бұрын
я так случайно заметил, что не реализован функционал "протухания" refreshToken'а
@Cred1Tor
@Cred1Tor 3 жыл бұрын
так и функционал затухания и обновления accessToken'а тоже не реализован. спрашивается, зачем вообще надо было делать refreshToken...
@akass4010
@akass4010 6 жыл бұрын
Получается пример с рефрешами не валидный, так как нет сроков жизни и когда придем обновлять токен, у нас уже нет юзера.
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
Все вполне валидное. Если вы про то что мы выпускаем auth-токен без срока действия, то это добавить один параметр на сервере при выпуске и на функциональность не влияет
@akass4010
@akass4010 6 жыл бұрын
Javascript.Ninja да, но когда юзер получит 401 и пойдёт обновлять, то его в endpoint уже не пустит. И рефреш уже не понятно чей. Я обычно рефреш делаю тоже jwt токеном, это норм?
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
akass нет, не ок, потому что рефреш токен должен быть одноразовым, а как отзывать jwt токены неясно. Поэтому мы храним в бд связку юзер-рефреш токен для этого
@akass4010
@akass4010 6 жыл бұрын
Javascript.Ninja да, с этим то я согласен и я храню, только несколько. Просто исходя из примера у рефреша нет срока жизни, и когда сдох токен и к нам пришли с рефрешем, то не ясно чей он и валидный ли.
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
akass ещё раз. Мы явно храним в бд пары юзер-рефреш токен. Так и понимаем чей он
@v.demchenko
@v.demchenko 6 ай бұрын
Я. надеюсь клавиатура выжила)
@Диасим
@Диасим Жыл бұрын
учились читали развивались, тут пришел бухой медведь, и решил все сломать! грустно!
@smartliga8623
@smartliga8623 6 жыл бұрын
Дружище, сделай, пожалуйста, видео про event loop. Твои рисунки это фирменный стиль )) все очень понятно. Вот хорошая преза, kzbin.info/www/bejne/bpKqmY2HoNR5mLM но не хватает динамических рисунков :)
@olegborodko1801
@olegborodko1801 5 жыл бұрын
да, я б тоже хотел про event loop на русском и по понятному)
@Speane
@Speane 6 жыл бұрын
Блин не понимаю как вяжется тест с обновление рефреш токена при получении новой пары токенов, с мултиплай тестом для токенов, когда может быть сразу несколько рефреш токенов. Это же взаимоисключающие варианты
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
Первый тест - ИСПОЛЬЗУЯ токен А мы получаем токен Б, А становится невалиден. Несколько рефреш токенов - используя ПАРУ ЛОГИН-ПАРОЛЬ мы получаем несколько рефреш токенов. все валидны
@Speane
@Speane 6 жыл бұрын
Это понял, теперь в другом запутался. По моему вы забыли реализовать протухание refresh токена?
@JavaScriptNinja
@JavaScriptNinja 6 жыл бұрын
Alex Speane там в конфиге выдачи токена достаточно добавить ключ expiresIn
@gen7891
@gen7891 3 жыл бұрын
Не досмотрел. В названии видео надо подписать что это koa. Почему не сделать код заранее и в видео просто показать основные вещи и дать линк на гитахаб репу? Короч как по мне, сложно все, большая, плотность информации. Мне к сожалению такой формат не подходит.
@gagogoga794
@gagogoga794 2 жыл бұрын
Глядя на это я чувствую себя нубом 😅
@uran1980video
@uran1980video 6 жыл бұрын
а что за фитча такая //?
@demidovruslan
@demidovruslan 6 жыл бұрын
wallaby js - расширение для автоматического прогона тестов по мере написания кода. А //? - видимо директива для расширения, которая указывает, что нужно отобразить результат или значение
@nikitastroganov289
@nikitastroganov289 6 жыл бұрын
Quokka.js Professional Edition
@vladm.9683
@vladm.9683 5 жыл бұрын
тоже хочу такую штуку теперь)
@MrGavr007
@MrGavr007 4 жыл бұрын
своеобразная подача материала, меня он почему то раздражает)
@MsNeksus
@MsNeksus 2 жыл бұрын
Мда. Знаний у тебя куча. Но такое впечатление, что ты записывал спидран, а не нечто обучающее
JWT. Часть 4. Клиент
40:05
JavaScript.Ninja
Рет қаралды 21 М.
JWT. Часть 1. Теория
15:50
JavaScript.Ninja
Рет қаралды 157 М.
Andro, ELMAN, TONI, MONA - Зари (Official Audio)
2:53
RAAVA MUSIC
Рет қаралды 8 МЛН
Топ 5 ОШИБОК Новичков в REACT
13:07
gorbatkoff
Рет қаралды 9 М.
Node JS - Быстрый Курс за 1 час
1:01:52
Владилен Минин
Рет қаралды 543 М.
JWT Authentication Tutorial - Node.js
27:36
Web Dev Simplified
Рет қаралды 1 МЛН