Аутентификация - Spring Security в деталях

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 90

  • @kirillbabich1034
    @kirillbabich1034 21 день тому +2

    По этому видео сразу понятен твой профессионализм. Все очень емко и понятно! Продолжай снимать дальше!

  • @Wansery
    @Wansery 10 місяців тому +21

    Когда я увидел, что у тебя даже визуализация написана через код, я прифегел конечно😂 сразу видно хорошего программиста

    • @shurik_codes
      @shurik_codes  10 місяців тому +2

      Скорее ленивого) Мне проще накидать схему в PlantUML, чем где-то нарисовать)

    • @mpchest1
      @mpchest1 10 місяців тому

      @@shurik_codes прикольный плагинчик, надо будет затестить

  • @shamm20.04
    @shamm20.04 2 місяці тому +2

    Молдчина!!! Все четко понятно! Без воды, прятно тебя слушать!!!

  • @IlyaSernikov
    @IlyaSernikov 8 місяців тому +1

    Очень крутое видео! Все четко, структурировано и в меру детализированно! Благодарю за такой качественный контент!
    Особенно понравилось объяснение на Sequence диаграммах :)

  • @kirumaqq
    @kirumaqq 11 місяців тому +3

    Ролик шедевр, час прошел незаметно

  • @Devivl
    @Devivl Рік тому +8

    Шурик, принимай вагон благодарности! Очень приятно и интересно слушать. Потрясающий фристайл владения диаграммами %)

  • @ЕленаРадченко-ч8к
    @ЕленаРадченко-ч8к 7 місяців тому +2

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

  • @MgsMen
    @MgsMen Рік тому +3

    Огромное спасибо за ролик и отдельно и гагинское спасибо про момент с Basic аутентификаций. До этого ролика рвал волосы на голове пытаясь осознать как фронт может работать с моим REST Api. Каждый раз отправлять пароль ? А оказалось, что современные браузеры умеют работать c Basic аутентификаций. Спасибо человеческое ))) Лайк, подписка

  • @Maxim_0Chka1920
    @Maxim_0Chka1920 Рік тому +11

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

  • @КамилаКадрян
    @КамилаКадрян 11 місяців тому +2

    Большое спасибо, за отличный материал! Очень-очень понравилось! Наконец получилось разобраться с архитектурой Spring Security

  • @ewreiizberlina3784
    @ewreiizberlina3784 Рік тому +3

    Моя золотая находка, спасибо вам - очень доходчиво и понятно объясняете)

  • @ARTSEMMAISEYENKA
    @ARTSEMMAISEYENKA 7 місяців тому +2

    Как же мне повезло что я вовремя нашел ваш канал, лучший канал про джаву и программирование в целом

  • @vik11111
    @vik11111 Рік тому +5

    Боже, это очень классный видос, я обязательно посмотрю их все. Спасибо вам, классная подача. И заодно узнал об диаграммах, что их можно писать так) ❤

  • @dmitrelkin9256
    @dmitrelkin9256 Рік тому +4

    Спасибеще тебе уважаемый! как раз грызу эту тему ))

  • @ВалерийСергеев-о3е
    @ВалерийСергеев-о3е 5 місяців тому +1

    спасибо огромное за курс. полезно узнать что за что отвечает и в каком контексте существует
    еще только на самом начале, но пользы намного больше, чем от всех обучающих статей baeldung

  • @Ann_Askerova
    @Ann_Askerova Рік тому +4

    Спасибо за такой качественный и полезный контент 👍🏻

  • @veniaminsamoylov1617
    @veniaminsamoylov1617 8 місяців тому +1

    Как мне раньше этого твиде не хватало спасибо хорошая работа.

  • @speedygonz4les
    @speedygonz4les 6 місяців тому +1

    Спасибо за наглядность 🤝 без лишнего, приятный голос, топ ;D

  • @exploringthedat
    @exploringthedat 10 місяців тому +1

    лучшее видео про security, спасибо за объяснение!

  • @fre4i973
    @fre4i973 4 місяці тому +2

    Спасибо за подробное объяснение)
    Поддержал на бусти

  • @rainrainov4495
    @rainrainov4495 9 місяців тому +1

    Сообщение в поддержку крутого канала. Так держать.

  • @2101MrPavel
    @2101MrPavel Рік тому +1

    Благодарю за полезную информацию. Очень структурировано.

  • @emrahhakan5462
    @emrahhakan5462 6 місяців тому +1

    Отличная серия спасибо за труд ❤

  • @mregrson
    @mregrson Рік тому +1

    Шурик! Классное видео! Ты мне очень помог! 😀

  • @MohammadMiladSahebzada
    @MohammadMiladSahebzada 7 місяців тому +1

    Thanks bro, ochen khoroshiy video urok🤝

  • @Дмитрий-з7м9е
    @Дмитрий-з7м9е 8 місяців тому +1

    Все понятно, большое спасибо!

  • @МаксимСамойлов-р6ф

    Лично мне нравятся видосы на этом канале: информативные, свежая инфа, довольно хорошая подача! МБ автор в дальнейшем откроет себя, как ментора?!!!

  • @alexbern8656
    @alexbern8656 10 місяців тому +1

    Отличное видео, спасибо за контент

  • @tami-he4mm
    @tami-he4mm Рік тому +5

    Я редко пишу комментарий под туториалами ибо они полный шлак, а с этим туториалом все намного иначе, спасибо тебе за то что делишься со своими знаниями, желаю тебе всего наилучшего! (кстати советую заранее готовить диаграммы чтобы сэкономить время)

  • @ponomarev302
    @ponomarev302 Рік тому +2

    Отличный материал, спасибо

  • @Roman_jv
    @Roman_jv Рік тому +1

    Спасиб тебе, уважаемый! )))

  • @paradiesd
    @paradiesd Рік тому +4

    Привет, спасибо за данный контент, продолжай в том же духе, очень все понятно и грамотно объяснил. Думаю даже через много лет, к этому видео будут обращаться. Сам хотел бы делать контент по Java и если делать то равняться точно стоит на тебя, еще раз спасибо

  • @sergeinerobeev3501
    @sergeinerobeev3501 28 днів тому +1

    Спасибо!🤝

  • @guitarhub7860
    @guitarhub7860 Рік тому +2

    изучил канал, подписочка получаетсы).

  • @dmitrelkin9256
    @dmitrelkin9256 Рік тому +5

    Александр, ты один из не многих профессионалов, кто отвечает на вопросы - попытаюсь воспользоваться этим чудом в шкурных целях )). На данный момент все найденные мной материалы по Spring Security напоминают сборник рецептов: "взять такой-то класс и переписать метод так-то, а если описать такой-то бин - то получится вот-так" - но это не дает понимания как работает вся кухня - есть ли человеческое описание архитектуры? (копаться в коде примеров с отладчиком для меня оказалось тоже малорезультативным занятим для понимания архитектуры). Еще раз спасибо за информацию.

    • @shurik_codes
      @shurik_codes  Рік тому +6

      Ну вообще в документации Spring Security есть вполне подробное описание архитектуры как фреймворка в целом, так и его отдельных частей.
      Фреймворк и фильтры: docs.spring.io/spring-security/reference/servlet/architecture.html
      Аутентификация: docs.spring.io/spring-security/reference/servlet/authentication/architecture.html
      Авторизация: docs.spring.io/spring-security/reference/servlet/authorization/architecture.html

  • @ilYa1984
    @ilYa1984 2 місяці тому

    Подскажите, пожалуйста, если это разборы для разработчиков уровня Junior (?), то какие бы Вы материалы рекомендовали для pre-Middle и Middle по Spring Framework? Спасибо за качественные видео.

  • @hackim2554
    @hackim2554 6 місяців тому +1

    - Сколько раз пересмотрел?
    - Да

  • @МаксимЦурканов-е5щ

    Благодарю!!!

  • @romanovichihin2429
    @romanovichihin2429 Рік тому +1

    лайк, коммент, некст!

  • @СергейШилин-ф8щ
    @СергейШилин-ф8щ 8 місяців тому +1

    Большое спасибо за видео!
    а есть ли ссылка на гитхаб?

    • @shurik_codes
      @shurik_codes  8 місяців тому

      Нет, к сожалению, примеров кода к данном ролику нет

  • @check-oy3ll
    @check-oy3ll Рік тому +1

    Подскажите пожалуйста, какую операционную систему вы используете?

  • @АлександрБугримов-о1е

    Подскажите, если сталкивались. А если например нужно 2-е конфигурации безопасности. Например для одной версии сервиса api-key, для другой версии и его методов аутентификация по JWT. Как это можно раз рулить в рамках одного приложения?

    • @shurik_codes
      @shurik_codes  Рік тому +2

      Два компонента SecurityFilterChain с разными @Order и разными настройками

    • @АлександрБугримов-о1е
      @АлександрБугримов-о1е Рік тому

      @@shurik_codes Если например Order(1) у JWT, то вызывается только конфигурация JWT. Если установить на API-KEY Order(1) а на JWT 2 то срабатывает конфигурация только для API-KEY, а все методы закрытые JWT вызываются анонимом. Как должна описываться конфигурация чтобы этого не было? Если видели такое. В зависимости от Order разный набор фильтров, ну т.е. они не объединяются

    • @shurik_codes
      @shurik_codes  Рік тому

      Нужно развести цепочки фильтров безопасности так, чтобы каждая из них обрабатывала только свои запросы при помощи HttpSecurity.securityMatcher()

    • @АлександрБугримов-о1е
      @АлександрБугримов-о1е Рік тому

      @@shurik_codes получается маппинг написан не уникальный и при вызове используется анонимный вызов?

  • @kovalenkoam
    @kovalenkoam Рік тому +1

    Вот не локальном ldiff фацле вме работает. А вот на реальном домене ,- на хоть ты плачь
    Может подскажете или покажете как прикрутить к реальному домену аутентификацию??? Как-то очень тяжело это даётся. В сети информации море и я уже виней просто тону. Заодно может подскажете как можно домен сделать. Может виртуалка какая, но только не ldiff файл

    • @shurik_codes
      @shurik_codes  Рік тому +1

      Признаться честно, я далеко не сразу понял, что речь идёт о LDAP-аутентификации. Возможно, эта тема будет освещена в недалёком будущем.

  • @dimirsen
    @dimirsen Рік тому +1

    У вас в текстовом файле для диаграммы запросов-ответов хардкодный localhost:8080 . Это можно сделать на основе проперти из другого файла?

    • @shurik_codes
      @shurik_codes  Рік тому +1

      1. Создаёшь JSON-файл (пусть будет properties.json)
      2. В начале файла-диаграммы загружаешь содержимое в переменную: !$props = %load_json("properties.json")
      3. В нужном месте вставляешь значение из переменной: $props.foo

  • @AlexanderM762
    @AlexanderM762 Рік тому +1

    Здравствуйте. Подскажите, как вы смотрите документацию по классам, интерфейсам, методам в среде разработки (если это среда разработки)? Если это не в среде разработки, то как вы смотрите и где это? Я имею в виду, где описание зелеными буквами написано. Я новичок в java.

    • @shurik_codes
      @shurik_codes  Рік тому +1

      ctrl+левая кнопка мыши по классу/интерфейсу/методу и т.д. в любой IDE

    • @AlexanderM762
      @AlexanderM762 Рік тому

      @@shurik_codes спасибо

    • @AlexanderM762
      @AlexanderM762 Рік тому

      @@shurik_codes еще заметил, что вы ищете документацию по классам в строке поиска. не подскажете как это сделать?

    • @shurik_codes
      @shurik_codes  Рік тому

      2 раза Shift

  • @БогданПрядко-щ7л
    @БогданПрядко-щ7л 9 місяців тому

    здравствуйте! Подскажите, пожалуйста, что за плагин у вас установлен, который делает из == один единый вытянутый символ =

    • @shurik_codes
      @shurik_codes  9 місяців тому +1

      В настройках редактора - шрифт, включить поддержку лигатур

    • @БогданПрядко-щ7л
      @БогданПрядко-щ7л 9 місяців тому

      @@shurik_codes спасибо большое

  • @guitarhub7860
    @guitarhub7860 Рік тому +2

    адаптация под два монитора ^_^

  • @MrAPPOLON123
    @MrAPPOLON123 8 місяців тому +1

    сколько лет опыта надо, чтобы все это в голове держать?

    • @shurik_codes
      @shurik_codes  8 місяців тому

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

  • @Lindt-z9z
    @Lindt-z9z 10 місяців тому

    А разве передача пороля и логин должна быть через POST, а не GET, так как данные, отправленные через POST, включаются в тело запроса и не отображаются в URL, что делает их менее уязвимыми к случайному или преднамеренному раскрытию через логи сервера или историю браузера?

    • @shurik_codes
      @shurik_codes  10 місяців тому

      А относительно чего вопрос? При использовании формы - да, нужно передавать только в POST-запросе. Basic-аутентификация подразумевает передачу логина и пароля в HTTP-заголовке запроса Authorization, поэтому такой вариант допустим с любыми HTTP-методами, включая GET.

    • @Lindt-z9z
      @Lindt-z9z 10 місяців тому

      @@shurik_codes вопрос был про формочку, спасибо за ответ ☺️

  • @vla-zav
    @vla-zav Рік тому +1

    Привет. Тут нависает проблема, мне идея пишет, что 'httpBasic()' и некоторые другие методы устарели и скоро будут удалены.
    Использую последнюю версию Security.
    Есть ли аналоги метода и можно ли как-нибудь исправить это? Или лучше перейти на более старую версию фреймворка?

    • @shurik_codes
      @shurik_codes  Рік тому +2

      Да, в Spring Security с версии 6.1 некоторые DSL-цепочки отмечены как @Deprecated и будут удалены в следующей мажорной версии фреймворка - 7.0. Вместо них предполагается использовать DSL с лямбда-выражениями. В случае с той же Basic-аутентификацией код станет примерно таким: http.httpBasic(httpBasic -> httpBasic.realmName("...")...). В общем, всё, что было между началом цепочки методов DSL (httpBasic() в данном случае) и концом (and()) теперь переезжает внутрь лямбда-выражения. Вот тут подробнее: docs.spring.io/spring-security/reference/migration-7/configuration.html

    • @vla-zav
      @vla-zav Рік тому +1

      @@shurik_codes Спасибо 🙏

  • @performanceact400
    @performanceact400 Рік тому +1

    Привет.
    Подскажи пожалуйста, а ты не занимаешься менторвством?

    • @shurik_codes
      @shurik_codes  Рік тому

      Вообще да, занимаюсь, но сейчас на это времени не хватает

  • @ram0973
    @ram0973 Рік тому +1

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

    • @shurik_codes
      @shurik_codes  Рік тому +2

      Уязвимость токенов можно снизить, используя защищённые соединения и сохраняя их на стороне клиента в безопасном месте, например в куках с параметрами Secure, HttpOnly и SameSite=Strict, если речь идёт о браузере. Собственно, сессионные куки желательно тоже с такими параметрами сохранять.
      Популярность токенов как таковых связана с развитием сервисов и протоколов единого входа (Single Sign-On, SSO), таких как OAuth, OpenID, OIDC, CAS. В процессе аутентификации к сервису аутентификации обращается как пользователь из клиентского приложения, так и целевой сервис, к которому пользователь пытается получить доступ. Использовать стандартную HTTP-сессию в данном случае не получится, хотя состояние между запросами нужно передавать, и для этого хорошо подходят токены.
      Токен позволяет не акцентировать внимание на способах хранения сессии в распределённых решениях. Хотя это можно решить хранением сессионных данных в базах данных, как это сделано в Spring Security.

  • @maximcyganek7944
    @maximcyganek7944 8 місяців тому

    Кто такой Стас Астафьев?

  • @vla-zav
    @vla-zav Рік тому +2

    Где ты был раньше?....

  • @АлексейМилованов-д8т

    Здравствуйте. Как победить ошибку, которая выпадает на 30:40 в видео? status=999. Пользователь вроде авторизуется, при повторном входе не страницу это видно, но первый раз при авторизации выпадает эта ошибка.

    • @shurik_codes
      @shurik_codes  Рік тому

      Если память меня не подводит, то это происходит потому что до этого я использовал в сессии браузера BASIC-аутентификацию, в результате чего данные BASIC-аутентификации сохранились в браузере, и при попытке входа при помощи формы одновременно используются два способа: BASIC и форма. Чтобы такого не происходило, способы аутентификации нужно разводить по разным цепочкам фильтров безопасности.

  • @John.Constantine.777
    @John.Constantine.777 11 місяців тому

    опять устаревший материал.
    безопасность меняется быстрее всего.

    • @shurik_codes
      @shurik_codes  11 місяців тому +2

      а в чём он именно устаревший?

    • @John.Constantine.777
      @John.Constantine.777 11 місяців тому

      @@shurik_codes что то навело на такие мысли. хотя сейчас смотрю - используется Chain.. пока отложил изучение, на днях проанализирую. Извиняюсь, если был не прав.

  • @seriktyulemissov5757
    @seriktyulemissov5757 9 місяців тому

    status 999 лечится
    spring:
    autoconfigure:
    exclude: org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration

    • @shurik_codes
      @shurik_codes  8 місяців тому

      Но лучше всё же решать ошибку, а не отключать ErrorMvcAutoConfiguration)