Keycloak и Spring Security
Keycloak - популярный SSO-сервис (Single Sign On), предоставляющий единую точку входа для всех ваших приложений, реализующий протоколы OAuth и OIDC. Keycloak может быть использован в связке со Spring Security с минимальным количеством дополнительного кода. В этом ролике я продемонстрирую настройку ресурс-сервера и логина Spring Security OAuth2 с использованием Keycloak.
00:00 Вступление и важное сообщение
02:05 Загрузка, запуск и настройка Keycloak
10:06 Ресурс-сервер
16:08 Роли рилма и получение их в Spring Security
27:30 OAuth-логин
Репозиторий проекта: github.com/alex-kosarev/sprin...
#java #spring #springsecurity #keycloak #oauth #oidc
Мой сайт: alexkosarev.name/
Паблик в VK: public218833461
Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
Стать доном: donut/shurik.codes
Донаты в Boosty: boosty.to/akosarev/purchase/1...
Донаты в Tinkoff: www.tinkoff.ru/cf/4PEOiVCZQuS
Пікірлер: 45
Браво! Маэстро кода)
Не,ну это бинго ! Впечатление такое что видосы появляются по ментальному запросу,буквально стоит подумать о какой то теме и тут же является видео. Спасибо,низкий поклон за труд и интересную подачу материала,это сверхценная информация.
всё супер
Да, keycloak это как раз то что сейчас нужно! Спасибо!
Спасибо за отличное видео. Тема непростая, но у тебя отлично получается преподносить сложные вещи простым языком. Спасибо. За хорошее настроение тоже спасибо (21:07) :)
Офигеть весь интернет перерыл в поисках новейшей информации по Spring Boot 3 и keycloak мало инфы и только на английском, спасибо автор. Респект.
О боже мой... Спасибо большое... Я как раз в июле выхожу на стажировку, где будет это.... Спаситель... Обожаю тебя💙💙💙💙💙💙💙
Консул тоже было очень полезно, не зря ты точно потратил время
Супер полезные видео на русском языке, желаю не останавливаться и продвижения канала. Про консул видео очень даже зашло, как раз на работе начал поднимать новый проект на микросервисной архитектуре и заиспользовал то, о чем ты рассказывал. Правда в итоге остановился на Eureka. Так что видео на тему микросервисов и девопса для java-разработчика тоже очень интересны.
я коричневые свичи смазал хорошенько и звук стал тише и приятнее =) по поводу помехи для видео
Подписался. Аоставил лайк. Написал коммент. Жду следующих видео.
Прикольные вещи рассказываешь. Мне как программисту с опытом достаточно посмотреть начала, что бы понять о чем речь и стоит ли брать такие инструменты в работу.
Все круто! Пока единственный русскоязычный пример после всех изменений! Только можно просьбу, Scratch круто смотрится, но можно через постман примеры? И если есть времч, немного подробней обьяснять) А так круто!
Очень познавательные видео. Еще хотелось бы материал про связку React+Spring+Keycloak. Когда front, для получения авторизации обращается только в spring, а spring уже в keycloak.
Спасибо большое за видео, очень полезно оказалось, как раз с Keycloak сейчас разбираюсь! А будет вообще желание снять видео с мини проектом по типу: пару микросервисов + security + Keycloak + kubernetes? Смотреть индусов, конечно, интересно, но не всегда там все хорошо раскрывают. За ваши видео респект огромный!
@shurik_codes
10 ай бұрын
Про k18s не знаю, ибо не силён в нём
@marinakaryukova6231
10 ай бұрын
@@shurik_codes про k8s есть хороший курс на канале слёрм. Открытая вечерняя школа. Kubernetes для разработчиков (Осень 2021) Слёрм. kzread.info/head/PL8D2P0ruohOBSA_CDqJLflJ8FLJNe26K-
@krab9512
10 ай бұрын
@@shurik_codes ну можно и без k8s, на docker тоже было бы интересно)
Спасибо большое, нужно будет как то поддержать проект, придется в ВК аккаунт что ли создавать только ради этого, а то не имею, т.к. название ВК не нравится. Как раз недавно делал ldap аутх в приложении, java не мой профиль, но разобраться удалось, и работает. Приятно видеть, как человек разбирается в теме. Хочу так жеж😂
лайк, коммент, некст!
спасибо
Спасибо! Насчет донатов - можно ли организовать более классический вариант типа СБП / перевода по номеру? Думаю, многим так будет удобнее
@shurik_codes
2 күн бұрын
Это надо номер телефона публиковать, а кроме тех, кто хочет поддержать, есть и те, кто попытается использовать эту информацию со злым умыслом
Спасибо за этот урок, есть вопрос, в данном видео мы рассмотрели защиту ресурсов на уровне зарегистрированных пользователях, а как обезопасить такое отношение когда есть 2 и более микросервисов и им нужно получать ресурсы друг друга (service to service) с использованием rest и при использовании брокера сообщений, как работает защита на таких уровнях? Спасибо
@shurik_codes
7 ай бұрын
Про REST я буду рассказывать в материалах про OAuth/OIDC
@justedlev
7 ай бұрын
@@shurik_codes я имею в веду защита обращений одного микросервиса к другому Service to Service (S2S) authorization, как организовать слой защиты для окружения микросервисной архитектуры
Как ты столько всего запомнил? ) сколько раз ты настраивал oauth? ) Челяба на связи
@shurik_codes
10 ай бұрын
Опыт, сколько раз - не считал)
Спасибо а если роли хранятся в ресурс сервере а не keycloak то конвертер не нужен и идем по стандартному пути spring security?
@shurik_codes
2 ай бұрын
Не совсем - нужно использовать свою реализацию JwtAuthenticationConverter, которая подтянет роли из нужного источника
а по SAML будет что-нибудь подобное?
@shurik_codes
10 ай бұрын
Может быть, обещать не буду
Привет, подскажи пожалуйста, почему мы ROLE_MANAGER в realm_access -> roles . А не в scope, который изначально предусмотрен? Для чего тогда нужен вообще scope ?
@shurik_codes
10 ай бұрын
Потому что это немного разные вещи) В scope указываются ресурсы, к которым предъявитель ключа доступа имеет доступ, scope по сути отвечает на вопрос "что доступно предъявителю ключа?", а роли отвечают на вопрос "кем является предъявитель ключа?". Если проект изначально разрабатывать исходя из механизмов авторизации, реализуемых в OAuth, то такие "финты ушами", скорее всего, не понадобятся. Впрочем в корпоративных проектах RBAC распространён очень сильно, и там нужно получать информацию о ролях пользователя.
@paradiesd
10 ай бұрын
@@shurik_codes Спасибо большое, как раз не мог понять, думал а почему бы тогда сразу роли не пихать в scope чтобы они стандартным конвентором не попадали в Authentication
@mccayl5878
Ай бұрын
@@shurik_codes scope имеет только client, но client != user, чтобы дальше следовать протоколу oauth мне нужно для каждого user'a создавать свой client? Тоже не круто, потому что client - это больше про приложение, а не пользователя (владельца ресурсов), как мне стоит поступить в этой ситуации, если в проекте предполагается наличие разного доступа у разных пользователей и при этом хочется дальше следовать протоколу, не придумывая каких-то костылей, в токене не следует хранить sensetive data, я думаю, что роли - это немного sesetive data. Какое решение подойдет для прода в этой ситуации?
@shurik_codes
Ай бұрын
@@mccayl5878 получать роли из userinfo-эндпоинта
Привет. Есть такая проблема. Если я создал роль например ROLE_ADMIN и в requestMatchers добавил hasRole("ADMIN") тогда мне прилетает 403. и в дебаге методы jwtAuthenticationConverter даже не вызываются. Но если я временно поставлю permitAll() запущу, а потом верну обратно, все работает как надо. В чем может быть проблема ?
@shurik_codes
5 ай бұрын
Сложно сказать, надо видеть конфиг и настройки реалма в Keycloak
@user-zr7bb7dc2e
5 ай бұрын
@@shurik_codes Все то же самое , что и на видео. Только без клиента, запрос приходит с фронта на реакте. Хотя через постман с тем же токеном пробовал, было то же самое. Второй раз такое. В первый раз на Винде было, потом я убунту поставил, с гита склонировал проекты заново настроил кейклок, и то же самое. Сначала долго думал, что за фигня потом вспомнил, как я от этого в первый раз избавился, и то же сработало
@shurik_codes
5 ай бұрын
Тогда могу предположить, что 403 ошибка связана либо с CORS, либо с CSRF, надо включить трассировку запросов в Spring Security и посмотреть, на каком шаге возникает ошибка
13:54