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

Sdílet
Vložit
  • čas přidán 22. 08. 2024
  • В этом ролике я рассказываю о точках входа аутентификации
    Мой сайт: alexkosarev.name/
    Паблик в VK: public2...
    Канал в Telegram:t.me/+TZCuO38v...
    Стать доном: donut/s...
    Донаты в Boosty: boosty.to/akos...
    Донаты в Tinkoff: www.tinkoff.ru...
    #java #springsecurity

Komentáře • 31

  • @shurik_codes
    @shurik_codes  Před rokem +3

    Читать на сайте alexkosarev.name/2023/06/03/authentication-entry-point-spring-security/
    Читать в VK vk.com/@shurik.codes-tochki-vhoda-autentifikacii-spring-security
    Читать в Telegraph telegra.ph/Tochki-vhoda-autentifikacii---Spring-Security-06-03

  • @nizat_rum
    @nizat_rum Před rokem +3

    Все супер! У меня предложение по тому, чтобы наглядно продемонстрировать на примере простого Spring Boot приложения как это все устроено, в связке с контроллерами, сервисами, репозиториями и так далее. Конкретно как зарегистрировать пользователя -> сохранить его логин и пароль в БД, при авторизации как правильно его аутентифицировать согласно полученных данных и данных в БД. Максимально абстрактно и с несложным примером)) В целом все понятно, но как это все в реальности связать правильно.....та еще задача.

    • @shurik_codes
      @shurik_codes  Před rokem +5

      Учту, у меня есть в планах такой ролик

  • @kacetal
    @kacetal Před 16 dny +1

    Обьяснение отличное, спасибо. Но уж очень плохое название у класса выбрали авторы spring-security, когда видишь EntryPoint то кажется что это то с чего начинается цепочка фильтров, что то вроде AuthenticationManager. А по сути это то чем она заканчивается. Конечно после вашего объяснения становится понятно что это как бы начало аутентификации после её провала.
    Хотя может для англоговорящих это более очевидно.

  • @paradiesd
    @paradiesd Před rokem +1

    Спасибо, ждем новые видо

  • @dmitrelkin9256
    @dmitrelkin9256 Před rokem +5

    Александр, спасибо! Так получилось, что долго пытался понять что и как делает exceptionHandling и authenticationEntryPoint и нафига оно вообще нужно ) - из просмотренных мной твое объяснение самое понятное и качественное. Респект!
    p.s. Вопрос - а как правильно поступить в случае с REST ? Отправить ответ "unathenticated" и в responceBody ссылку на endPoint для аутентификации?

    • @shurik_codes
      @shurik_codes  Před rokem

      Насчёт REST всё зависит от контракта между клиентским приложением и серверным. В целом на мой взгляд достаточно отправлять 401 Unauthorized для указания отсутствия аутентификации.

    • @dmitrelkin9256
      @dmitrelkin9256 Před rokem +1

      @@shurik_codes Спасибо за ответ! Александр, правильно ли я понимаю что exceptionHandling перехватывает исключения возникающие в процессе аутентификации и далее уже обработка идет в authenticationEntryPoint?

    • @shurik_codes
      @shurik_codes  Před rokem +2

      @@dmitrelkin9256 exceptionHandling перехватывает вообще все исключения, происходящие в процессе работы Spring Security, а в authenticationEntryPoint передаёт исключения AuthenticationException

  • @karton2282
    @karton2282 Před rokem +1

    Александр, ваши ролики - это просто клад. У меня возник один вопросик. Когда вы поставили точку входа в "sign-in.html", я так понимаю у вас уже был реализован контроллер логирования? Или он должен по дефолту работать?

    • @karton2282
      @karton2282 Před rokem +1

      И как вы авторизовались, используя пароль password, а не сгенерированный?

    • @shurik_codes
      @shurik_codes  Před rokem +1

      Фильтр для логина автоматически активируется при использовании formLogin при конфигурировании цепочки фильтров безопасности

    • @shurik_codes
      @shurik_codes  Před rokem +2

      @@karton2282 задал в application.yml постоянный пароль свойством spring.security.user.password

    • @karton2282
      @karton2282 Před rokem +2

      @@shurik_codes Надеюсь у вас в планах есть сделать ролик про аутентификации с использованием JWT токена)

    • @shurik_codes
      @shurik_codes  Před rokem +2

      Планы на аутентификацию при помощи JWT у меня есть

  • @nikolaymatvienko1090
    @nikolaymatvienko1090 Před rokem +3

    Отлично!. А в чем принципиальное отличие, мы ведь можем вместо .authenticationEntryPoint указать кастомную точку аунтефикации через .loginPage("страница")?

    • @shurik_codes
      @shurik_codes  Před rokem +4

      HttpSecurity.exceptionHandling().authenticationEntryPoint() - это основной способ задания точки входа, а loginPage - это метод из DSL аутентификации при помощи формы, который в качестве точки входа использует new LoginUrlAuthenticationEntryPoint(loginPage), по сути упрощенный способ установить точку входа в контексте аутентификации при помощи формы.

  • @user-cb3tc6tp7n
    @user-cb3tc6tp7n Před 8 měsíci +1

    Круто, спасибо за контент!
    Заметил swagger asterisk-a, занимаетесь звонками?

  • @SirNicklass
    @SirNicklass Před rokem +1

    Кастомный dsl в 7-ом Spring Security похоже удалят, на 6.1 большинство chain-методов помечены как deprecated, форсят использование lamda выражений

    • @shurik_codes
      @shurik_codes  Před rokem +2

      Вот это поворот, пора обновляться до spring boot 3.1, судя по всему там много интересного

    • @SirNicklass
      @SirNicklass Před rokem +2

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

  • @megustolapasta
    @megustolapasta Před rokem +2

    Добрый день, планируется ли материал по jwt авторизации?

    • @shurik_codes
      @shurik_codes  Před rokem +2

      Надеюсь, до неё тоже дойдёт)

  • @user-et7ej3ip4t
    @user-et7ej3ip4t Před 7 měsíci

    Я хочу, чтобы пользователю при неправильном вводе логина/пароля показывался шаблон Thymleaf с атрибутом (Model) incorrectUsernameOrPassword. Скажите, пожалуйста, как это можно сделать? Другими словами, я хочу узнать, как показать пользователю страницу, динамично созданную с помощью Thymleaf и не использовать sendRedirect.

  • @ram0973
    @ram0973 Před rokem

    А если я хочу jdbc сессию, но при этом REST API, какая точка входа должна быть?

    • @shurik_codes
      @shurik_codes  Před rokem

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

  • @a.egorov85
    @a.egorov85 Před rokem

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

    • @shurik_codes
      @shurik_codes  Před rokem

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