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

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

КОМЕНТАРІ • 32

  • @shurik_codes
    @shurik_codes  Рік тому +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

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

    Калорийность Ваших видео зашкаливает, спасибо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @DauletZhantekov
    @DauletZhantekov 11 місяців тому +1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @АркадийСаакян-ч5н
    @АркадийСаакян-ч5н 10 місяців тому

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

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

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

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

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

  • @a.egorov85
    @a.egorov85 Рік тому

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

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

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