Авторизация - Spring Security в деталях

Поділитися
Вставка
  • Опубліковано 19 чер 2024
  • Представить себе информационную систему, в которой все пользователи имеют одинаковые неограниченные права практически невозможно - в абсолютном большинстве информационных систем пользователи обладают разными правами, в зависимости от выполняемых задач. Авторизация обеспечивает предоставление полномочий пользователям, а так же проверку их наличия у пользователя при необходимости. В этом ролике я постарался рассказать, что такое авторизация, какие основные способы её реализации существуют, а так же рассмотрел применение Spring Security для обеспечения авторизованного доступа к HTTP-эндпоинтам и методам.
    00:00:00 Вступление
    00:00:19 Что такое авторизация
    00:02:20 Подходы к реализации авторизации
    00:13:18 HTTP-авторизация
    00:44:26 Защита методов
    01:15:07 Иерархии прав
    #java #spring #springsecurity #abac #rbac #authorization #авторизация
    Мой сайт: alexkosarev.name/
    Паблик в VK: public218833461
    Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
    Стать доном: donut/shurik.codes
    Донаты в Boosty: boosty.to/akosarev/purchase/1...
    Донаты в Tinkoff: www.tinkoff.ru/cf/4PEOiVCZQuS

КОМЕНТАРІ • 59

  • @speedygonz4les
    @speedygonz4les 2 дні тому +1

    Краааайне годное видео. Спасибо, что потратил время на запись, уверен ты потратил далеко не полтора часа :D

  • @user-hb9od6th1d
    @user-hb9od6th1d 7 місяців тому +14

    полтора часа кайфа

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

      Да ну бросьте меня так нахваливать, а то щёчки аж покраснели xD

  • @pilotivanovich
    @pilotivanovich Місяць тому +1

    прекрасная лекция, были проблемы с переходом на Spring Boot 3, теперь многие препоны сняты, спасибо

  • @aleksandrkrasnobaev
    @aleksandrkrasnobaev 7 місяців тому +12

    Александр, вы выпускаете невероятно крутые видео. Особенно сильно я обалдел, когда в одном из них вы упомянули Стаса Асафьева. Невольно пробежала мысль: "Вот это да, теперь осталось дождаться, когда стасян в своей документалке упомянет сельского джависта". Спасибо вам огромное

  • @aleksandrkrasnobaev
    @aleksandrkrasnobaev 7 місяців тому +5

    Было бы еще очень круто увидеть от вас видео по работе с протоколом websocket

  • @stanislavkuzmin8211
    @stanislavkuzmin8211 7 місяців тому +9

    Спасибо за труд! Продолжай в том же духе) было бы интересно узнать, как вообще пришел к Java, как рос от Джуна до текущей должности, как прокачиваешь скилы)

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

    Спасибище! очень в тему! давно ждал ))

  • @user-kk1sz2ng1d
    @user-kk1sz2ng1d 7 місяців тому +3

    отлично, спасио за очередную порцию годноты!

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

    очень круто и качественно, все по делу, спасибо тебе огромное:3

  • @user-is9sc3uk1o
    @user-is9sc3uk1o 4 місяці тому +1

    Топовые видео по Security! И свежее что очень важно!

  • @Fantast51
    @Fantast51 6 місяців тому +2

    Как всегда отлично! Жду ролик про ACL.

  • @user-tt3vu5ob7g
    @user-tt3vu5ob7g 7 місяців тому +2

    Четкое объяснение! Благодарность за труд и время

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

    Отличный ролик ! Очень хорошо все рассказано, понятно и ёмко. Смотрится как хороший фильм - на одном дыхании )) Огромное Спасибо, Александр !

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

    Спасибо

  • @pashamironenko6757
    @pashamironenko6757 3 місяці тому +1

    Про dispatcherTypeMatchers хотелось бы больше информации. Как раз столкнулся с проблемой, когда тип asynk (и запрос всегда падал с 403), ну и как выход был permitAll. Но внутренности сего процесса остались неясны.
    А в целом отличные видео, очень много именно нужной информации в структурном виде
    Огромное спасибо!

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

    Очень круто! Как насчёт полного курса по спрингу?)

    • @shurik_codes
      @shurik_codes  7 місяців тому +4

      Отвечу стандартно: было бы время)

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

    Лайк, коммент🎉

  • @Elteruin
    @Elteruin 6 місяців тому +3

    Уважаемый, будь те так любезны выпустить видео про Hibernate. Используют или нет Criteria API, основные практики и т.д. Хотелось бы знать, на чём лучше сконцентрировать внимание.

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

      Я на практике не использую JPA/Hibernate, но пожелание учту)

  • @front-endpadavan4421
    @front-endpadavan4421 6 місяців тому +2

    Отличный канал с крутым контентом! Подписка и лайк однозначно. Скажите, планируются ли видео по reactive programming? Также очень интересует Debezium, Apache Camel, Flink и Spark.

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

      Про реактивное программирование будет, про Apache Camel, возможно, тоже

  • @GenesizANT
    @GenesizANT 6 місяців тому

    Безумно полезное видео, автору низкий поклон! У меня вопрос насколько целесообразно давать доступы и через http и через аннотации в одном приложении?

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

      Иногда встречаются ситуации, когда объединение техник авторизации может быть удобным, особенно, когда речь идёт о постфильтрации или поставторизации (@PostFilter и @PostAuthorize). В целом нет ничего плохого в комбинировании этих техник, хотя в большинстве случаев, на мой взгляд, можно обойтись какой-то одной.

  • @user-lg9wf8sy9t
    @user-lg9wf8sy9t 7 місяців тому +3

    @shurik_codes
    Александр, спасибо огромное за контент! ❤ Очень информативно!
    21:53 Скажите, планируется ли ролик по работе с CAS? И, может быть, SAML?

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

      Да, блиииин... Ещё две темы в планы надо добавлять)

  • @raynur256
    @raynur256 5 місяців тому +2

    Привет, ты навешивал Pre/PostAuthorize на сервисы, а не на контроллеры, за этим скрывается какая-то логика? А так же чему спринг отдает приоритет если присутствуют и аннотации, и фильтер чейн?

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

      И @PreAuthorize и @PostAuthorize можно вешать и на контроллер (и не только), всё зависит от того, где хочется ограничивать доступ. Наивысший приоритет у фильтра авторизации.

  • @user-up2lc4kb5o
    @user-up2lc4kb5o 7 місяців тому

    Спасибо за видео. Можно ли аннотации фильтрации использовать "не по назначению", а, например, для изменения содержимого объектов коллекции? В качестве примера такой гипотетический кейс: возвращать весть список туду-шек (не только автора), но чужие туду-шки "деперсонализировать" (заменить имя автора на белиберду).

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

      Нет, изменять сами объекты средствами Spring Security не получится, но это можно сделать при помощи АОП: описать соответствующие точки среза, и в советах модифицировать данные

  • @dimkaddd7674
    @dimkaddd7674 3 місяці тому +1

    Спасибо. Защита методов и HTTP оно все комбинируется в продакшине или выбирается один какой-то?

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

      Можно комбинировать, безопасность методов позволяет более тонко настраивать авторизацию, например, проверять доступ к загруженным из БД объектам, а HTTP-безопасность позволяет настроить авторизацию более общими правилами.

  • @EvaVagner84
    @EvaVagner84 4 місяці тому +1

    Учим яву, не расстраиваем Чака😂

  • @bestourtv1272
    @bestourtv1272 6 місяців тому

    Добрый день! Спасибо за видео. Можно этот код в репозитории GitHub увидеть?

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

      К этому видео нет примеров кода

  • @IlyaSlezkin
    @IlyaSlezkin Місяць тому

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

    • @shurik_codes
      @shurik_codes  Місяць тому

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

    • @IlyaSlezkin
      @IlyaSlezkin Місяць тому

      @@shurik_codes зачем проходить аутентификацию внутри приложения? взаимодействие с другими приложениями происходит через рест апи же

  • @aidar119
    @aidar119 5 місяців тому +1

    Тяжело читать шрифт, поменяй пожалуйста на обычный какой нибудь, а так видео топ

  • @user-sj6hl1ye4r
    @user-sj6hl1ye4r 5 місяців тому

    Правильно ли я понимаю, что spring security будет работать, если в качестве веб-сервера используется Tomcat (spring-boot-starter-web)? Например, если буду использовать в качестве веб-сервера Armeria, то spring security не будет ловить запросы.

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

      Насколько я понимаю, Armeria основан на Netty, предположу, что можно прикрутить Spring Security Reactive

  • @paulpollack9000
    @paulpollack9000 4 місяці тому +1

    не плохой контент, но от паразитов б следует избавится, таких например как `соответственно` etc

  • @user-jq5ez8vz2j
    @user-jq5ez8vz2j 6 місяців тому +1

    Расскажите, пожалуйста, как использовать кастомные аннотации в авторизации. В аннотации задаются енам параметры (ресурс, действие), по которым через внешний сервис определяется имеет пользователь право доступа к методу или нет.

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

      АОП в помощь: в точках среза указывать (pointcut) перехватываемые аннотации, в советах (advice) реализовывать нужную логику

    • @user-jq5ez8vz2j
      @user-jq5ez8vz2j 6 місяців тому

      То есть хотите сказать с помощью Spring Security такое невозможно сделать?

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

      @@user-jq5ez8vz2j чтобы строить поведение относительно кастомные аннотаций нужно АОП, а внутри можно использовать spring security

    • @user-jq5ez8vz2j
      @user-jq5ez8vz2j 6 місяців тому

      @@shurik_codes не уверен, что это оптимальный путь. Но в любом случае было бы интересно посмотреть как правильно встроить СС в advice, чтоб аннотация отрабатывала полностью как @PreAuthorize например, как на обычных методах, так и на контроллерах.

  • @romans.a.6404
    @romans.a.6404 4 місяці тому

    Подскажите, какой шрифт у вас

  • @eapashkov
    @eapashkov 6 місяців тому

    Ты на windows пересел?

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

      Нет, это Ubuntu Linux)

    • @eapashkov
      @eapashkov 6 місяців тому

      напугал)
      Убранный вентилятор еле пережил, а тут переход на виндоус)
      @@shurik_codes

  • @1qxz
    @1qxz 16 днів тому

    один на нас другой на кавказ

  • @psevdonim_youtube147
    @psevdonim_youtube147 7 місяців тому

    Слишком длинные ролики, больше 20 минут не хочется смотреть(

    • @shurik_codes
      @shurik_codes  7 місяців тому +3

      Кому-то нужны исчерпывающие ролики, кому-то коротенькие, к сожалению, угодить всем не могу

    • @psevdonim_youtube147
      @psevdonim_youtube147 7 місяців тому

      знаю о таком, а если делать короткую версию и расширенную? будет больше контента, больше лайков и просмотров)@@shurik_codes

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

      @@psevdonim_youtube147 на это всё время надо, которого катастрофически не хватает

    • @denis-3
      @denis-3 7 місяців тому +6

      Ставь на x2 если куда то спешишь. Человек всё подробно разбирает.