Читать на сайте 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
@ilYa19842 ай бұрын
Калорийность Ваших видео зашкаливает, спасибо.
@nizat_rum Жыл бұрын
Все супер! У меня предложение по тому, чтобы наглядно продемонстрировать на примере простого Spring Boot приложения как это все устроено, в связке с контроллерами, сервисами, репозиториями и так далее. Конкретно как зарегистрировать пользователя -> сохранить его логин и пароль в БД, при авторизации как правильно его аутентифицировать согласно полученных данных и данных в БД. Максимально абстрактно и с несложным примером)) В целом все понятно, но как это все в реальности связать правильно.....та еще задача.
@shurik_codes Жыл бұрын
Учту, у меня есть в планах такой ролик
@paradiesd Жыл бұрын
Спасибо, ждем новые видо
@dmitrelkin9256 Жыл бұрын
Александр, спасибо! Так получилось, что долго пытался понять что и как делает exceptionHandling и authenticationEntryPoint и нафига оно вообще нужно ) - из просмотренных мной твое объяснение самое понятное и качественное. Респект! p.s. Вопрос - а как правильно поступить в случае с REST ? Отправить ответ "unathenticated" и в responceBody ссылку на endPoint для аутентификации?
@shurik_codes Жыл бұрын
Насчёт REST всё зависит от контракта между клиентским приложением и серверным. В целом на мой взгляд достаточно отправлять 401 Unauthorized для указания отсутствия аутентификации.
@dmitrelkin9256 Жыл бұрын
@@shurik_codes Спасибо за ответ! Александр, правильно ли я понимаю что exceptionHandling перехватывает исключения возникающие в процессе аутентификации и далее уже обработка идет в authenticationEntryPoint?
@shurik_codes Жыл бұрын
@@dmitrelkin9256 exceptionHandling перехватывает вообще все исключения, происходящие в процессе работы Spring Security, а в authenticationEntryPoint передаёт исключения AuthenticationException
@SirNicklass Жыл бұрын
Кастомный dsl в 7-ом Spring Security похоже удалят, на 6.1 большинство chain-методов помечены как deprecated, форсят использование lamda выражений
@shurik_codes Жыл бұрын
Вот это поворот, пора обновляться до spring boot 3.1, судя по всему там много интересного
@SirNicklass Жыл бұрын
@@shurik_codes да, депрекейтов накинули будь здоров)
@nikolaymatvienko1090 Жыл бұрын
Отлично!. А в чем принципиальное отличие, мы ведь можем вместо .authenticationEntryPoint указать кастомную точку аунтефикации через .loginPage("страница")?
@shurik_codes Жыл бұрын
HttpSecurity.exceptionHandling().authenticationEntryPoint() - это основной способ задания точки входа, а loginPage - это метод из DSL аутентификации при помощи формы, который в качестве точки входа использует new LoginUrlAuthenticationEntryPoint(loginPage), по сути упрощенный способ установить точку входа в контексте аутентификации при помощи формы.
@kacetal4 ай бұрын
Обьяснение отличное, спасибо. Но уж очень плохое название у класса выбрали авторы spring-security, когда видишь EntryPoint то кажется что это то с чего начинается цепочка фильтров, что то вроде AuthenticationManager. А по сути это то чем она заканчивается. Конечно после вашего объяснения становится понятно что это как бы начало аутентификации после её провала. Хотя может для англоговорящих это более очевидно.
@DauletZhantekov Жыл бұрын
Круто, спасибо за контент! Заметил swagger asterisk-a, занимаетесь звонками?
@shurik_codes Жыл бұрын
Немного)
@megustolapasta Жыл бұрын
Добрый день, планируется ли материал по jwt авторизации?
@shurik_codes Жыл бұрын
Надеюсь, до неё тоже дойдёт)
@Ivan-t8l1r22 күн бұрын
Что будет, если не создать точку доступа?
@АркадийСаакян-ч5н11 ай бұрын
Я хочу, чтобы пользователю при неправильном вводе логина/пароля показывался шаблон Thymleaf с атрибутом (Model) incorrectUsernameOrPassword. Скажите, пожалуйста, как это можно сделать? Другими словами, я хочу узнать, как показать пользователю страницу, динамично созданную с помощью Thymleaf и не использовать sendRedirect.
@karton2282 Жыл бұрын
Александр, ваши ролики - это просто клад. У меня возник один вопросик. Когда вы поставили точку входа в "sign-in.html", я так понимаю у вас уже был реализован контроллер логирования? Или он должен по дефолту работать?
@karton2282 Жыл бұрын
И как вы авторизовались, используя пароль password, а не сгенерированный?
@shurik_codes Жыл бұрын
Фильтр для логина автоматически активируется при использовании formLogin при конфигурировании цепочки фильтров безопасности
@shurik_codes Жыл бұрын
@@karton2282 задал в application.yml постоянный пароль свойством spring.security.user.password
@karton2282 Жыл бұрын
@@shurik_codes Надеюсь у вас в планах есть сделать ролик про аутентификации с использованием JWT токена)
@shurik_codes Жыл бұрын
Планы на аутентификацию при помощи JWT у меня есть
@ram0973 Жыл бұрын
А если я хочу jdbc сессию, но при этом REST API, какая точка входа должна быть?
@shurik_codes Жыл бұрын
Точка входа зависит от используемого способа аутентификации, так что она может быть любой.
@a.egorov85 Жыл бұрын
Подскажите пожалуйста, а как обработывать ошибку входа если пользователь в "бане". Перенаправлять на страницу с сообщением о бане?
@shurik_codes Жыл бұрын
Вариантов много, самый простой - при загрузке информации о пользователе при помощи UserDetailsService указывать, что пользователь заблокирован. Но можно реализовать и свой вариант при помощи фильтра, который будет проверять после аутентификации, заблокирован пользователь или нет и перенаправлять его на соответствующую страницу.