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

Sdílet
Vložit
  • čas přidán 22. 08. 2024

Komentáře • 86

  • @Wansery
    @Wansery Před 6 měsíci +11

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

    • @shurik_codes
      @shurik_codes  Před 6 měsíci +1

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

    • @mpchest1
      @mpchest1 Před 6 měsíci

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

  • @fre4i973
    @fre4i973 Před 27 dny +2

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

  • @Maxim_0Chka1920
    @Maxim_0Chka1920 Před 9 měsíci +9

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

  • @user-fl6wk8jr9i
    @user-fl6wk8jr9i Před 3 měsíci +2

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

  • @ARTSEMMAISEYENKA
    @ARTSEMMAISEYENKA Před 3 měsíci +2

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

  • @user-un1co5lb9b
    @user-un1co5lb9b Před měsícem +1

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

  • @speedygonz4les
    @speedygonz4les Před 2 měsíci +1

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

  • @veniaminsamoylov1617
    @veniaminsamoylov1617 Před 4 měsíci +1

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

  • @Devivl
    @Devivl Před rokem +7

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

  • @dmitrelkin9256
    @dmitrelkin9256 Před rokem +4

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

  • @kirumaqq
    @kirumaqq Před 7 měsíci +2

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

  • @MgsMen
    @MgsMen Před 9 měsíci +2

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

  • @IlyaSernikov
    @IlyaSernikov Před 4 měsíci +1

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

  • @emrahhakan5462
    @emrahhakan5462 Před 2 měsíci +1

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

  • @user-kk5xm9ph1g
    @user-kk5xm9ph1g Před 7 měsíci +2

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

  • @Ann_Askerova
    @Ann_Askerova Před rokem +4

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

  • @exploringthedat
    @exploringthedat Před 6 měsíci +1

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

  • @vik11111
    @vik11111 Před rokem +5

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

  • @mregrson
    @mregrson Před 8 měsíci +1

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

  • @rainrainov4495
    @rainrainov4495 Před 5 měsíci +1

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

  • @tami-he4mm
    @tami-he4mm Před 9 měsíci +5

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

  • @user-nx6dj6vi7c
    @user-nx6dj6vi7c Před 3 měsíci +1

    Thanks bro, ochen khoroshiy video urok🤝

  • @2101MrPavel
    @2101MrPavel Před 10 měsíci +1

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

  • @ewreiizberlina3784
    @ewreiizberlina3784 Před rokem +3

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

  • @user-lx4dc1ls3e
    @user-lx4dc1ls3e Před 10 měsíci +2

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

  • @user-qb3ck7cq3k
    @user-qb3ck7cq3k Před 4 měsíci +1

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

  • @alexbern8656
    @alexbern8656 Před 6 měsíci +1

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

  • @paradiesd
    @paradiesd Před rokem +4

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

  • @ponomarev302
    @ponomarev302 Před rokem +2

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

  • @Roman_jv
    @Roman_jv Před rokem +1

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

  • @dmitrelkin9256
    @dmitrelkin9256 Před rokem +5

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

    • @shurik_codes
      @shurik_codes  Před rokem +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

  • @guitarhub7860
    @guitarhub7860 Před rokem +2

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

  • @hackim2554
    @hackim2554 Před 2 měsíci

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

  • @user-yp9if6tq7t
    @user-yp9if6tq7t Před rokem +2

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

  • @romanovichihin2429
    @romanovichihin2429 Před rokem +1

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

  • @guitarhub7860
    @guitarhub7860 Před rokem +2

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

  • @user-pt6vo2kp7c
    @user-pt6vo2kp7c Před 4 měsíci +1

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

    • @shurik_codes
      @shurik_codes  Před 4 měsíci

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

  • @dimirsen
    @dimirsen Před rokem +1

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

    • @shurik_codes
      @shurik_codes  Před rokem +1

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

  • @check-oy3ll
    @check-oy3ll Před 10 měsíci +1

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

  • @AlexanderM762
    @AlexanderM762 Před 11 měsíci +1

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

    • @shurik_codes
      @shurik_codes  Před 11 měsíci +1

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

    • @AlexanderM762
      @AlexanderM762 Před 11 měsíci

      @@shurik_codes спасибо

    • @AlexanderM762
      @AlexanderM762 Před 11 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 11 měsíci

      2 раза Shift

  • @ram0973
    @ram0973 Před rokem +1

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

    • @shurik_codes
      @shurik_codes  Před rokem +2

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

  • @MrAPPOLON123
    @MrAPPOLON123 Před 4 měsíci +1

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

    • @shurik_codes
      @shurik_codes  Před 4 měsíci

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

  • @performanceact400
    @performanceact400 Před rokem +1

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

    • @shurik_codes
      @shurik_codes  Před rokem

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

  • @kovalenkoam
    @kovalenkoam Před 8 měsíci +1

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

    • @shurik_codes
      @shurik_codes  Před 8 měsíci +1

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

  • @vla-zav
    @vla-zav Před rokem +1

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

    • @shurik_codes
      @shurik_codes  Před rokem +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 Před rokem +1

      @@shurik_codes Спасибо 🙏

  • @user-iu6yz6ck6h
    @user-iu6yz6ck6h Před rokem +1

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

    • @shurik_codes
      @shurik_codes  Před rokem +2

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

    • @user-iu6yz6ck6h
      @user-iu6yz6ck6h Před rokem

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

    • @shurik_codes
      @shurik_codes  Před rokem

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

    • @user-iu6yz6ck6h
      @user-iu6yz6ck6h Před rokem

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

  • @vla-zav
    @vla-zav Před rokem +2

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

  • @user-mz4xm7ej3d
    @user-mz4xm7ej3d Před 5 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 5 měsíci +1

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

    • @user-mz4xm7ej3d
      @user-mz4xm7ej3d Před 5 měsíci

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

  • @user-un6zf5mc7g
    @user-un6zf5mc7g Před 6 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 6 měsíci

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

    • @user-un6zf5mc7g
      @user-un6zf5mc7g Před 6 měsíci

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

  • @maximcyganek7944
    @maximcyganek7944 Před 4 měsíci

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

  • @seriktyulemissov5757
    @seriktyulemissov5757 Před 5 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 4 měsíci

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

  • @John.Constantine.777
    @John.Constantine.777 Před 7 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 7 měsíci +2

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

    • @John.Constantine.777
      @John.Constantine.777 Před 7 měsíci

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

  • @user-qq9ci6ol7x
    @user-qq9ci6ol7x Před 11 měsíci

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

    • @shurik_codes
      @shurik_codes  Před 11 měsíci

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