Spring Security: Spring Security + REST + JWT

  Рет қаралды 42,628

Александр Фисунов

Александр Фисунов

Жыл бұрын

Ссылка на телеграм-чат для обсуждения Spring + Java: t.me/+rFxdSCjJxdVjNWVi
Ссылка на исходники: github.com/FlameXander/securi...

Пікірлер: 122
@MrMadKlaus
@MrMadKlaus Жыл бұрын
Лучший. Грамотная речь, без слов паразитов, выверенный план лекции. И даже заминка помогает проследить, а как профи ищет ошибку. Спасибо!
@user-pm9ip2tu9x
@user-pm9ip2tu9x 3 ай бұрын
Грамотная речь и дикция, без лишних слов. Всё доходчиво! Очень уважаю Ваш труд. Хотелось бы по больше видео уроков от Вас.
@staroyzakalki7799
@staroyzakalki7799 11 ай бұрын
Спасибо большое вам за ваши лекции, все очень доходчиво и понятно. Узнал про вас в ГБ, жаль не удалось побывать у вас на онлайн занятиях.
@JanSobolewski1987
@JanSobolewski1987 5 ай бұрын
@EnableGlobalMethodSecurity уже устарел, вместо него нужно воспользоваться аннотацией @EnableMethodSecurity, csrf тоже стал deprecated, поэтому заменим его лямбда выражение. Потом еще устарели методы authorizeRequests() и antMatchers() и and(). Итоговый код выглядит вот так : public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf(AbstractHttpConfigurer::disable) .cors(AbstractHttpConfigurer::disable) .authorizeHttpRequests(authz -> authz .requestMatchers("/secured").authenticated() .requestMatchers("/info").authenticated() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().permitAll()) .sessionManagement((sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .exceptionHandling((exceptionHandling) -> exceptionHandling.authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED))); //addFilterBefore() return http.build();
@timullka
@timullka 4 ай бұрын
человек, ты лучший!
@Artem-zg9nc
@Artem-zg9nc 2 ай бұрын
очень сильно прарился но по итогу сделал сам и вроде как работает а потом увидел это сообщение и такой ндаааа
@MrMaweer
@MrMaweer 6 ай бұрын
Как же у вас речь поставлена - разбирался сам с JWT и голова болела, а тут такой подарок! Спасибо за лекцию!
@dimabzz
@dimabzz Жыл бұрын
Очень доступно и все понятно 👌 Было бы здорово еще видео про микросервисы в сочетании spring security и spring gateway 😊
@user-lx4dc1ls3e
@user-lx4dc1ls3e 10 ай бұрын
Прекрасное объяснение для русской аудитории! Внятно и по делу! Спасибо автору за труд👍👍👍
@drugsbunny_8641
@drugsbunny_8641 Жыл бұрын
Огромное спасибо! Самый актуальный мануал по spring security + jwt)
@user-jq1mt1oz1y
@user-jq1mt1oz1y 10 ай бұрын
Благодарность 🙏 Лайк - подписка! Как я долго искал этот контент на доступном языке.
@fleurdelic
@fleurdelic 3 ай бұрын
вы лучший в аспекте объяснений, продолжайте, пожалуйста и спасибо огромное за ваш труд
@KuziaribiiKit
@KuziaribiiKit 10 ай бұрын
Спасибо за видео!) Жду продолжения по спрингу😄
@vorova
@vorova 11 ай бұрын
Спасибо Вам за видео с подробной информацией)
@artyomkogay
@artyomkogay 8 ай бұрын
Циклическая зависимость возникает из-за того, что UserService зависит от PasswordEncoder, а SecurityConfig зависит от UserService. Проще всего делегировать создание Bean Definition на ioc контейнер и создать отдельную конфигурацию для PasswordEncoder, вынести PasswordEncoder-bean в отдельный класс PasswordEncoderConfiguration.
@user-nh3gd1mh7x
@user-nh3gd1mh7x 8 ай бұрын
Спасибо тебе мил человек за подсказку
@artyomkogay
@artyomkogay 7 ай бұрын
@@user-nh3gd1mh7x удачи вам!
@dmaberlin
@dmaberlin 5 ай бұрын
покажи пожалуйста эту реализацию на гитхабе =)
@user-sc6xq9up7i
@user-sc6xq9up7i Ай бұрын
@@dmaberlin import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @Configuration public class PasswordEncoderConfiguration { @Bean public BCryptPasswordEncoder bCryptPasswordEncoder(){ return new BCryptPasswordEncoder(); } }
@user-tc6hl9wc3d
@user-tc6hl9wc3d 11 ай бұрын
Лучшее объяснение по теме на русском! Большое спасибо!
@Devivl
@Devivl 11 ай бұрын
Большое спасибо за видео. Приятно слушать.
@dmitrelkin9256
@dmitrelkin9256 Жыл бұрын
Ура! Александр, спасибо! очень долгожданная тема ))
@elseff
@elseff Жыл бұрын
Спасибо большое!!!! Очень ждал!! ❤
@svrd-tech
@svrd-tech 10 ай бұрын
Спасибо за урок! Было бы интересно рассмотреть случай с несколькими методами аутентификации, например - для пользователей через Google учетку, а для администраторов - по паролю. Ну и refreshToken для реализма)
@alexxenon8721
@alexxenon8721 11 ай бұрын
Спасибо за данный гайд, лучший просто!
@user-jz8xr5wf8z
@user-jz8xr5wf8z 7 ай бұрын
спасибо большое! очень доступно для понимания !
@kelevra_1985
@kelevra_1985 5 ай бұрын
Благодарю , за видео. Ждем разбор по микросервисам.
@dmitrybaranov7447
@dmitrybaranov7447 Жыл бұрын
Спасибо! Сделал закладочку на будущее.Мне до этого далековато. Жду продолжения по основам.
@lifeisanadventure8951
@lifeisanadventure8951 6 ай бұрын
Спасибо огромное, четко и понятно! Таким людям памятники на вокзале ставить надо)))
@blackobemamatters4418
@blackobemamatters4418 11 ай бұрын
Спасибо автору за видео, очень информативно. Автор сделайте видос по микросервисах
@divergenny
@divergenny Жыл бұрын
Спасибо большое, вы лучший
@Makstrytolearn
@Makstrytolearn Жыл бұрын
Это лучший ментор! Гуру💪🏻🙏🏻
@jersonmade8043
@jersonmade8043 11 ай бұрын
Топ. Вот бы видос по микросервисам
@Kudasheev
@Kudasheev Жыл бұрын
Все супер! Можно еще улучшить, увеличив немного размер шрифта и всего остального.
@amaddiallo7278
@amaddiallo7278 10 ай бұрын
I do not understand the language well but the course is very well done thank you for sharing from french
@timullka
@timullka 4 ай бұрын
Spring Security: Spring Security + REST + JWT 00:00 Введение • Видео объясняет, как использовать джи-ти-токины в спринг секьюрити для защиты приложений. • Рассматриваются примеры использования и настройки безопасности в рамках работы спринга. 01:52 Создание проекта • Создание проекта с использованием спринга, GPS, H2 базы данных, ломбака и флай эмиграйшн. • Настройка проекта и добавление зависимостей. 06:37 Настройка контроллеров и сущностей • Создание контроллеров и сущностей для работы с пользователями и ролями. • Настройка гет-мапингов и сущностей для доступа к данным. 14:29 Репозитории и интерфейсы • Создание репозиториев для работы с ролями и пользователями. • Создание интерфейсов для работы с ролями и пользователями. 15:29 Создание сущностей и репозиториев • Создание сущностей и репозиториев для работы с пользователями и ролями. • Использование аннотаций для создания сущностей и репозиториев. 19:29 Создание сервиса и методов • Создание юзер-сервиса для работы с пользователями и ролями. • Реализация методов для поиска пользователей, создания новых пользователей и преобразования пользователей к виду, понимаемому Spring Security. 26:25 Конфигурация безопасности • Создание пакета конфиг-конфигурации и настройка конфигурации безопасности. • Использование аннотаций и бинов для настройки правил безопасности, хранения паролей и использования юзер-сервиса. • Создание бина для настройки анти-кейшн провайдера и юзер-сервиса. 31:21 Безопасность в REST • В REST нет сессий, поэтому безопасность основана на токенах. • Токен содержит информацию о пользователе, его роли и подписывается секретным ключом. • Токен подшивается к каждому запросу и проверяется на бэкенде. 42:13 Токен и его структура • Токен состоит из заголовка, полезной нагрузки и подписи. • Заголовок кодируется с помощью алгоритма, полезная нагрузка кодируется с помощью другого алгоритма, а подпись формируется с использованием секретного ключа. • Токен может быть расшифрован, но не подменен. 46:13 Создание утилиты для работы с токенами • Создание класса, который будет отвечать за работу с токенами, и инжектирование значений в его поля. • Создание методов для формирования токена из пользователя, получения списка ролей из токена и проверки его на корректность. 58:05 Аутентификация пользователя и выдача токена • Создание контроллера для аутентификации и регистрации пользователей, инжектирование юзер-сервиса и других необходимых компонентов. • Создание дтошек для передачи данных о пользователе и получения токена. • Использование аутенти-менеджера для проверки логина и пароля и возврата успешного результата или ошибки аутентификации. • Создание дтошки для обработки ошибок аутентификации. 01:03:01 Получение токена • Создание конструктора для получения токена с указанием статуса, сообщения и текущего времени. • Использование конструктора для формирования токена и его возврата в качестве ответа. 01:09:42 Проверка токена • Защита токена с помощью подписи, которая не может быть изменена без знания секрета. • Если подпись изменена, то бэк получает ошибку о том, что токен недействителен. 01:12:27 Создание фильтра безопасности • Создание фильтра безопасности, который проверяет наличие токена и его корректность. • Использование утилиты для получения токена из заголовка авторизации. • Проверка корректности заголовка авторизации и получение имени пользователя из токена. 01:18:23 Работа с токенами и контекстом • В видео рассказывается о том, как с помощью утилит можно сделать гет-юзернейм и проверить пользователя. • Если время жизни токена истекло, то в контексте пользователя не будет. • Если имя пользователя найдено, то проверяется, что в контексте нет других пользователей. • Если все хорошо, то имя пользователя и список ролей из токена добавляются в контекст. 01:29:15 Регистрация и фильтрация • В видео демонстрируется регистрация пользователя и фильтрация данных в токене. • Если пароли не совпадают, то возвращается ошибка. • Если пользователь уже существует, то запрос отклоняется. • В общем, автор рекомендует спрятать обработку исключений в аутсервис и использовать глобальный перехват исключений для обработки ошибок. 01:34:15 Создание и использование токена • Обсуждение использования инкодера для шифрования пароля и его хранения в базе данных. • Создание и использование токена для аутентификации пользователя. 01:46:22 Регистрация пользователя и использование токена • Регистрация пользователя с использованием пароля и инкодера. • Создание токена для пользователя и его использование для аутентификации. 01:50:22 Итоги и обсуждение • Обсуждение принципов работы с токенами и их использования в проектах на Spring. • Ответы на вопросы зрителей и приглашение к обсуждению в комментариях.
@user-if3cd8em4q
@user-if3cd8em4q 3 ай бұрын
Нейросети имба
@lusterluster6403
@lusterluster6403 3 ай бұрын
что за нейросеть?
@user-if3cd8em4q
@user-if3cd8em4q 3 ай бұрын
от яндекса, которая пересказывает видео@@lusterluster6403
@timullka
@timullka 3 ай бұрын
Встроенная в браузер Яндекс
@user-vi3bi4ev1r
@user-vi3bi4ev1r 9 ай бұрын
Спасибо автору
@funnychannel1888
@funnychannel1888 6 ай бұрын
Большое спасибо конечно за твои 2 трансляции. Но представь, я просто угробил половину дня на поиск причины почему у меня выходила ошибка 403. В итоге оказалось, что я не прописывал префикс ROLE_ в бд и из-за этого аутентификация проходила, но с надписью ошибка 403. Я пролазил точкой остановы половину классов, которые добавил в конфиг. Вот такие моменты самые бесячие. Понял только когда в точке останова увидел строчку return hasAuthority(ROLE_PREFIX + role); А ну и естественно csrf().disabled().cors().disabled() обязательно ставить.
@Rizomus
@Rizomus Ай бұрын
Спасибо огромное!
@user-di3wg7yp4p
@user-di3wg7yp4p Жыл бұрын
Спринг, ммм :) Спасибо!
@LordofTanks
@LordofTanks 2 ай бұрын
Огромное спасибо)
@cwnik
@cwnik Жыл бұрын
Спасибо!🙂
@user-yf2er5vr8q
@user-yf2er5vr8q 6 ай бұрын
super-puper ждем еще видосы
@danilsadretdinov3247
@danilsadretdinov3247 6 ай бұрын
Спасибо вам
@aliksargsyan2782
@aliksargsyan2782 Жыл бұрын
thank you for your provided content, it is very helpful and useful, but please change IDE theme to dark mode, I really struggle to understand what' going on there.
@stepan-klyukin
@stepan-klyukin 10 ай бұрын
супермегахарош
@_F_A_K_I_R_
@_F_A_K_I_R_ 2 ай бұрын
Хорош!👍
@user-hh8fk6kt2l
@user-hh8fk6kt2l Жыл бұрын
Спасибо за контент,правда мне до этого ещё далеко
@user-bn9wc8db6s
@user-bn9wc8db6s 3 ай бұрын
185 раз смотрю, так и не могу разобраться, что к чему в этом security)))
@ukratitelkisok9726
@ukratitelkisok9726 2 ай бұрын
да все объясняют через жопу, данный автор один из немногих у кого получилось сделать по другому(хорошо). Но я бы рекомендовал начать с этого видео и подобных kzbin.info/www/bejne/pmewiZVmfNmLrck
@swampfolkband
@swampfolkband 7 ай бұрын
А можно ещё видео как разлогиниться) а то как-то не полно вышло!)
@matriks2007
@matriks2007 7 ай бұрын
Подскажите, можно ли записаться на ваши курсы? Если можно то где?
@bones_wp_
@bones_wp_ 4 ай бұрын
Почему нельзя было снять сразу с Spring Boot 3? Объяснение логики это хорошо конечно, но практическое применение только на устаревших проектах, т.к. с 6 версии Security подход изменился
@FlameXander
@FlameXander Жыл бұрын
Исходники чуть попозже залью на GitHub
@FlameXander
@FlameXander Жыл бұрын
@@anyone7783 прикрепил ссылку в описании и в комментариях
@desdichago
@desdichago 10 ай бұрын
При авторизации дважды в базу лезем. AuthenticationManager под капотом сам бегает в UserService.
@hypnoZzzable
@hypnoZzzable 3 ай бұрын
Здравствуйте. 2 день не пойму как сделать токен просроченным, чтобы он не работал для скажем заблокированного юзера. Можно ли как то подменить в существующем токене дату истечения срока жизни?
@jeakkey
@jeakkey 11 ай бұрын
Всё круто, спасибо, очень классное объяснение. Но JwtRequestFilter срабатывает на каждый запрос и из-за этого возвращается пустой 200 стоатус по всем запросам. Тут что-то надо поменять в конфигах или логику добавить в JwtRequestFilter
@RealMrPitsa
@RealMrPitsa 9 ай бұрын
А в конце вызывается filterChain.doFilter(request, response)?
@kolyanlock
@kolyanlock 11 ай бұрын
Когда я делал авторизацию и аутентификацию на Python DRF удалось довольно быстро всё настроить и ещё logout сделать, но там токены были обычные не JWT и хранились в БД привязанные к пользователю и из можно было посмотреть и удалить или изменить через админку (которая кстати из коробки в Django, только настроить надо было что там будет). Я так понимаю JWT токены не обязательно сохранять в БД, т.к. в них закодированы username, roles и lifetime. Но как тогда сделать logout? Хранить список недействительных токенов или просто сохранять токены в бд? Какой подход надо лучше использовать?
@EatSomeBread123
@EatSomeBread123 11 ай бұрын
Технически токен хранит приложение или браузер, если его удалить оттуда, то оно не сможет отправить запрос, потребуется авторизация, а на стороне бека просто время жизни токена истечет
@Rizomus
@Rizomus Ай бұрын
Не совсем понятно на 1:20:25, что значит, что в контексте может лежать что-то "поверх токенов или под токенами"?
@user-qi8sl7by3r
@user-qi8sl7by3r 11 ай бұрын
То есть контроллер authitization заменяет контроллер login?
@AB-ku1su
@AB-ku1su 8 ай бұрын
я не пойму тут старый спринг секьюрити? сейчас он так фильтрчейн не конфигурируется
@user-yf2er5vr8q
@user-yf2er5vr8q 6 ай бұрын
не хотите снять видео какой-то проект типа магазина
@oopsoops9040
@oopsoops9040 Жыл бұрын
Я просто смотрю и в шоке сколько я не знаю и как это вообще уложить в своей бошке😢 Я пытаюсь устроиться хотя бы на трейни или джуна. Но спринг со всеми своими библиотеками вообще тяжело идёт. Все эти аннотации и под классы 🥴
@eugenesmith9940
@eugenesmith9940 8 ай бұрын
А в чем суть наличия и работы через Principle или UserDetails интерфейсы, если у нас есть свой класс (условный User тот же или Customer, Employee и т.д), у которого мы можем получать все необходимое для авторизации и аутентификации? PS. это вопрос из разряда "хочу понять Principle и UserDetails(Service)".
@mishaprokopovich5253
@mishaprokopovich5253 8 ай бұрын
Интерфейс Principal представляет аутентифицированного пользователя. У него есть только метод getName().Principal не дает подробной информации о пользователях, таких как пароль, роли или разрешения. Интерфейс UserDetails представляет полные детали пользователя, необходимые для аутентификации и авторизации. У него есть разные методы по получению информации о пользователе ( getUsername(), getAuthorities(), getPassword() и т.п.)
@nursalga
@nursalga 4 ай бұрын
Объяснение хорошее. Но реализация хромает. Не показано как настраивать h2, flyway. Без которых проект не запускается или не работает как показано на видео
@RustamPlayer
@RustamPlayer 6 ай бұрын
Есть ли какая то конкретная причина использования Date для времени, или можно спокойно использовать Local[Date/Time/DateTime]?
@FlameXander
@FlameXander 6 ай бұрын
Можно спокойно использовать LocalDateTime
@AB-ku1su
@AB-ku1su 8 ай бұрын
секрет любой или какой то особенный нужен?
@den9261
@den9261 Жыл бұрын
в нормальном качестве будет позже , я так понимаю ? тема очень нужная и интересная
@user-yc1gx2ug1v
@user-yc1gx2ug1v Жыл бұрын
+ тоже жду лучше кач-во
@FlameXander
@FlameXander Жыл бұрын
KZbin еще несколько часов видео будет обрабатывать и потом да, будет нормальное качество
@EatSomeBread123
@EatSomeBread123 Жыл бұрын
@@FlameXander а можно ожидать что появится видео про юнит тесты? Особенно авторизация прям требует чтобы была покрыта юнит тестами
@AmiAndTim
@AmiAndTim Ай бұрын
1:30:06 не поняла, что меняем в токене?
@vitya4646
@vitya4646 7 ай бұрын
А что делать если мы пользователю поменяли право или например удалили его? Получается что другой сервис, пока lifetime не истек, все равно прочитает токен и посчитает его корректным? Какое решение тут выбрать? Или JWT не про это и лучше тогда использовать сессии?
@DieZzzza
@DieZzzza Ай бұрын
Как вариант - хранить токены (например в SQL или более быстрой памяти). Условно генеришь токен и отправляешь его как пользователю так и в таблицу. Что-то подобное есть тут watch?v=R4LwwJVjVP0 Но не совсем. Пользователь стучится к тебе по токену, ты проверяешь валиден ли токен по признаку "активен" и только тогда пускаешь. А при смене роли - принудительно сбрасываешь на "неактивен" и пусть новый токен получает через логин. Ну или может быть ставить некий флаг "изменена роль" при котором в логаут не выкинет, но доступ по токену останется только для замены токена на более актуальный. А ко всем иным эндпоинтам доступ не давать. Учитывая что таких обращений будет много, то токены наверное стоит не в SQL, а в чём-то более быстром хранить.
@user-hm3zr4vf4o
@user-hm3zr4vf4o 10 күн бұрын
я не понимаю, что я сделал не так у меня на 1:08:30 все время выдает 401 ответ, хотя все вроде бы делал так же
@FlameXander
@FlameXander Жыл бұрын
Ссылка на исходники: github.com/FlameXander/security-jwt
@user-fc5rv6zn4k
@user-fc5rv6zn4k 11 күн бұрын
А обязательно использовать роли ?
@user-jk4gc6nv7l
@user-jk4gc6nv7l 11 ай бұрын
Jwt использует javax.xml.bind.DatatypeConverter но в новых версиях java оно не используется и выдает ошибку
@user-jk4gc6nv7l
@user-jk4gc6nv7l 11 ай бұрын
Может уже есть новая версия где не используется avax.xml.bind.DatatypeConverter?
@nataliasidorova8878
@nataliasidorova8878 7 ай бұрын
Нужна зависимость javax.xml.bind:jaxb-api
@mishaprokopovich5253
@mishaprokopovich5253 8 ай бұрын
У меня user может заходить куда угодно и получать корректные ответы, а вот admin нет, в /secured возвращается пустой текст, хотя user-у отдавалась строка secured-data, была у кого-нибудь схожая ситуация?
@kai_9482
@kai_9482 5 ай бұрын
может в конфиге что-то? Вот пример моего конфига: ``` @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf(csrf -> csrf.disable()) .cors(cors -> cors.configurationSource(request -> { var corsConfiguration = new CorsConfiguration(); corsConfiguration.setAllowedOriginPatterns(List.of("*")); corsConfiguration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); corsConfiguration.setAllowedHeaders(List.of("*")); corsConfiguration.setAllowCredentials(true); return corsConfiguration; })) .authorizeHttpRequests((requests) -> requests .requestMatchers("/user/log").permitAll() .requestMatchers("/user/logpost").permitAll() .requestMatchers("/user/reg").permitAll() .requestMatchers("/").hasAnyRole("ADMIN","USER") .requestMatchers("/user").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .exceptionHandling(exceptions -> exceptions .authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)) ) .httpBasic(Customizer.withDefaults()) .addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); return http.build(); } ```
@jersonmade8043
@jersonmade8043 6 ай бұрын
У кого-то возникала ошибка, что бин AuthenticationManager не регистрируется?
@jersonmade8043
@jersonmade8043 6 ай бұрын
Решил проблему, если будете пробовать реализовывать, то класс SecurityConfig помечайте аннотацией @Configuration
@amir18n
@amir18n 6 ай бұрын
@@jersonmade8043 спасибо большое! долго возился не понимал почему на все запросы 401 ловил. после добавления @Configuration все заработало
@timullka
@timullka 4 ай бұрын
лучший ты мне помог!!!!!!!! @@jersonmade8043
@user-gv3zn1us6s
@user-gv3zn1us6s 5 ай бұрын
Под конец немного путанная подача, но тема сложная и даже автор немного подвисал или слабовато подготовился. Очень не хватает: 1. тайм-лайна 2. Ссылок после видео
@dmaberlin
@dmaberlin 5 ай бұрын
jwt: secret:111ddd lifetime:30m 'Cannot resolve configuration property 'jwt'
@user-qi8sl7by3r
@user-qi8sl7by3r 11 ай бұрын
И помогите пожалуйста прописать контроллер logout
@kai_9482
@kai_9482 5 ай бұрын
Хотелось бы теперь узнать, как сдлеать вход без postman так, чтобы токен встравивался в сылку 🤔🤔
@FlameXander
@FlameXander 5 ай бұрын
Это достаточно просто делается на фронтенде
@kai_9482
@kai_9482 5 ай бұрын
@@FlameXander я в фронтенде не шарю, не могли бы вы скинуть статью? Если не затруднит.
@user-zm1jr6xs5r
@user-zm1jr6xs5r 3 ай бұрын
@@FlameXander я пытаюсь запустить через постман registration, но не могу понять каким должен быть путь
@kai_9482
@kai_9482 4 ай бұрын
У меня скоро крыша полетит, до сих пор не нашёл нужного гайда как встроить токен в сылку
@jurii4555
@jurii4555 5 ай бұрын
хтось може надіслати посилання на телеграм канал а то ця не дійсна
@EndofLine335
@EndofLine335 8 ай бұрын
Слушайте, вопрос такой. С какой-то версии спринга поменяли принцип описания SecurityFilterChain. Теперь тот метод через .cors().disable() и .csrf().disable() не совсем валиден. Подскажите, как выкрутиться?
@ArtFanRamm
@ArtFanRamm 7 ай бұрын
http.cors(cors -> cors.disable()).csrf(csrf -> csrf.disable()) и т.д.
@kai_9482
@kai_9482 5 ай бұрын
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf(csrf -> csrf.disable()) .cors(cors -> cors.configurationSource(request -> { var corsConfiguration = new CorsConfiguration(); corsConfiguration.setAllowedOriginPatterns(List.of("*")); corsConfiguration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); corsConfiguration.setAllowedHeaders(List.of("*")); corsConfiguration.setAllowCredentials(true); return corsConfiguration; })) .authorizeHttpRequests((requests) -> requests .requestMatchers("/user/log").permitAll() .requestMatchers("/user/logpost").permitAll() .requestMatchers("/user/reg").permitAll() .requestMatchers("/").hasAnyRole("ADMIN","USER") .requestMatchers("/user").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .exceptionHandling(exceptions -> exceptions .authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)) ) .httpBasic(Customizer.withDefaults()) .addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); return http.build(); }
@locbkm1269
@locbkm1269 3 ай бұрын
@@kai_9482 Спасибо большое
@den9261
@den9261 Жыл бұрын
Туман в мозгу по поводу jwt начинает рассеиваться )
@TEOOOOOOOOOOOO
@TEOOOOOOOOOOOO 4 ай бұрын
почему выходит циклическая зависимость, потому что в SecurityConfig мы инжектим UserService userService;
@TEOOOOOOOOOOOO
@TEOOOOOOOOOOOO 4 ай бұрын
@Bean public DaoAuthenticationProvider daoAuthenticationProvider() { DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider(); daoAuthenticationProvider.setPasswordEncoder(passwordEncoder()); daoAuthenticationProvider.setUserDetailsService(userService); return daoAuthenticationProvider; } Создание этого бина лишнее
@denystry
@denystry 2 ай бұрын
@@TEOOOOOOOOOOOO спасибо
@kolyanlock
@kolyanlock 11 ай бұрын
Почему когда я кладу в claims List, потом достаю его, idea не может успокоиться и пишет что метод должен возвращать не List, а прост List, если я так сделаю это начнутся другие предупреждения, к решению я так и не пришёл, кроме как игнорировать, но почему же у меня так происходит, у вас такого не было когда вы писали код?
@EatSomeBread123
@EatSomeBread123 11 ай бұрын
так же светилось желтым предупреждение. как вариант можно сделать так: public List getRoles(String token) { List roles = getAllClaimsFromToken(token).get("roles", List.class); return roles.stream().map(Object::toString).toList(); } или просто повесить аннотацию @SuppressWarnings("unchecked")
@hookeym7151
@hookeym7151 7 ай бұрын
много что не объясняешь
@svyatoiambrozii
@svyatoiambrozii 11 ай бұрын
Отличнное обьяснение работы!😊 а можно ли из principal.getname() его имя таким образом сохранять например как автора сообщения что он создает например. Если Principal будет в аигументе метода. Или лучше для таких случаев использовать @AutentificationPrincipal User user и из него получать детали?
@trz18
@trz18 Ай бұрын
метод контролера auth не авторизует пользователя и выдает сообщение o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not look like BCrypt
@RealMrPitsa
@RealMrPitsa 9 ай бұрын
Для разрешения циклической зависимости можно либо создать конструктор явно и указать в нём @Lazy, либо добавить после @RequiredArgsConstructor (onConstructor_={@Lazy})
GeekBrains: "Как устроен Spring Security" - 31.05.20
2:05:58
Александр Фисунов
Рет қаралды 87 М.
Keycloak и Spring Security
37:37
Уголок сельского джависта
Рет қаралды 10 М.
Пробую самое сладкое вещество во Вселенной
00:41
ТАМАЕВ vs ВЕНГАЛБИ. Самая Быстрая BMW M5 vs CLS 63
1:15:39
Асхаб Тамаев
Рет қаралды 4,7 МЛН
We Got Expelled From Scholl After This...
00:10
Jojo Sim
Рет қаралды 51 МЛН
Homemade Professional Spy Trick To Unlock A Phone 🔍
00:55
Crafty Champions
Рет қаралды 52 МЛН
Что такое JWT и как его создать
14:32
Listen IT
Рет қаралды 41 М.
JWT авторизация. Основы JWT - механизма.
6:45
Хочу вАйти
Рет қаралды 2,9 М.
Spring Security, demystified by Daniel Garnier Moiroux
2:36:00
Complete Spring Security with JWT Authentication | Spring Security 6 | Securing Spring Boot
3:45:03
Евгений Борисов - Spring-построитель
2:24:30
JPoint, Joker и JUG ru
Рет қаралды 172 М.
Spring Security Tutorial | In depth Course
2:38:19
Daily Code Buffer
Рет қаралды 123 М.
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 25 МЛН
DC Fast 🏃‍♂️ Mobile 📱 Charger
0:42
Tech Official
Рет қаралды 485 М.
Ждёшь обновление IOS 18? #ios #ios18 #айоэс #apple #iphone #айфон
0:57
📦Он вам не медведь! Обзор FlyingBear S1
18:26
Телефон в воде 🤯
0:28
FATA MORGANA
Рет қаралды 956 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 24 МЛН