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

  • @user-zm9on5rb8z
    @user-zm9on5rb8z7 күн бұрын

    Браво! Маэстро кода)

  • @moscowkremlingovernment
    @moscowkremlingovernment10 ай бұрын

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

  • @user-md8bw3te3v
    @user-md8bw3te3v6 күн бұрын

    всё супер

  • @marinakaryukova6231
    @marinakaryukova623110 ай бұрын

    Да, keycloak это как раз то что сейчас нужно! Спасибо!

  • @Devivl
    @DevivlАй бұрын

    Спасибо за отличное видео. Тема непростая, но у тебя отлично получается преподносить сложные вещи простым языком. Спасибо. За хорошее настроение тоже спасибо (21:07) :)

  • @erikshaydulin8272
    @erikshaydulin827210 ай бұрын

    Офигеть весь интернет перерыл в поисках новейшей информации по Spring Boot 3 и keycloak мало инфы и только на английском, спасибо автор. Респект.

  • @vla-zav
    @vla-zav10 ай бұрын

    О боже мой... Спасибо большое... Я как раз в июле выхожу на стажировку, где будет это.... Спаситель... Обожаю тебя💙💙💙💙💙💙💙

  • @paradiesd
    @paradiesd10 ай бұрын

    Консул тоже было очень полезно, не зря ты точно потратил время

  • @grigorev.nikita
    @grigorev.nikita10 ай бұрын

    Супер полезные видео на русском языке, желаю не останавливаться и продвижения канала. Про консул видео очень даже зашло, как раз на работе начал поднимать новый проект на микросервисной архитектуре и заиспользовал то, о чем ты рассказывал. Правда в итоге остановился на Eureka. Так что видео на тему микросервисов и девопса для java-разработчика тоже очень интересны.

  • @dmaberlin
    @dmaberlin3 ай бұрын

    я коричневые свичи смазал хорошенько и звук стал тише и приятнее =) по поводу помехи для видео

  • @rainrainov4495
    @rainrainov4495Ай бұрын

    Подписался. Аоставил лайк. Написал коммент. Жду следующих видео.

  • @MamayFreeride
    @MamayFreeride10 ай бұрын

    Прикольные вещи рассказываешь. Мне как программисту с опытом достаточно посмотреть начала, что бы понять о чем речь и стоит ли брать такие инструменты в работу.

  • @user-ic2cb6sc8i
    @user-ic2cb6sc8i8 ай бұрын

    Все круто! Пока единственный русскоязычный пример после всех изменений! Только можно просьбу, Scratch круто смотрится, но можно через постман примеры? И если есть времч, немного подробней обьяснять) А так круто!

  • @evtrapeznikov
    @evtrapeznikov8 ай бұрын

    Очень познавательные видео. Еще хотелось бы материал про связку React+Spring+Keycloak. Когда front, для получения авторизации обращается только в spring, а spring уже в keycloak.

  • @krab9512
    @krab951210 ай бұрын

    Спасибо большое за видео, очень полезно оказалось, как раз с Keycloak сейчас разбираюсь! А будет вообще желание снять видео с мини проектом по типу: пару микросервисов + security + Keycloak + kubernetes? Смотреть индусов, конечно, интересно, но не всегда там все хорошо раскрывают. За ваши видео респект огромный!

  • @shurik_codes

    @shurik_codes

    10 ай бұрын

    Про k18s не знаю, ибо не силён в нём

  • @marinakaryukova6231

    @marinakaryukova6231

    10 ай бұрын

    @@shurik_codes про k8s есть хороший курс на канале слёрм. Открытая вечерняя школа. Kubernetes для разработчиков (Осень 2021) Слёрм. kzread.info/head/PL8D2P0ruohOBSA_CDqJLflJ8FLJNe26K-

  • @krab9512

    @krab9512

    10 ай бұрын

    @@shurik_codes ну можно и без k8s, на docker тоже было бы интересно)

  • @alexeysamkov7095
    @alexeysamkov709510 ай бұрын

    Спасибо большое, нужно будет как то поддержать проект, придется в ВК аккаунт что ли создавать только ради этого, а то не имею, т.к. название ВК не нравится. Как раз недавно делал ldap аутх в приложении, java не мой профиль, но разобраться удалось, и работает. Приятно видеть, как человек разбирается в теме. Хочу так жеж😂

  • @romanovichihin2429
    @romanovichihin24298 ай бұрын

    лайк, коммент, некст!

  • @dmaberlin
    @dmaberlin3 ай бұрын

    спасибо

  • @user-ti7wk4qt6s
    @user-ti7wk4qt6s2 күн бұрын

    Спасибо! Насчет донатов - можно ли организовать более классический вариант типа СБП / перевода по номеру? Думаю, многим так будет удобнее

  • @shurik_codes

    @shurik_codes

    2 күн бұрын

    Это надо номер телефона публиковать, а кроме тех, кто хочет поддержать, есть и те, кто попытается использовать эту информацию со злым умыслом

  • @justedlev
    @justedlev7 ай бұрын

    Спасибо за этот урок, есть вопрос, в данном видео мы рассмотрели защиту ресурсов на уровне зарегистрированных пользователях, а как обезопасить такое отношение когда есть 2 и более микросервисов и им нужно получать ресурсы друг друга (service to service) с использованием rest и при использовании брокера сообщений, как работает защита на таких уровнях? Спасибо

  • @shurik_codes

    @shurik_codes

    7 ай бұрын

    Про REST я буду рассказывать в материалах про OAuth/OIDC

  • @justedlev

    @justedlev

    7 ай бұрын

    @@shurik_codes я имею в веду защита обращений одного микросервиса к другому Service to Service (S2S) authorization, как организовать слой защиты для окружения микросервисной архитектуры

  • @mikhailyegorov27
    @mikhailyegorov2710 ай бұрын

    Как ты столько всего запомнил? ) сколько раз ты настраивал oauth? ) Челяба на связи

  • @shurik_codes

    @shurik_codes

    10 ай бұрын

    Опыт, сколько раз - не считал)

  • @KakoitoTam
    @KakoitoTam2 ай бұрын

    Спасибо а если роли хранятся в ресурс сервере а не keycloak то конвертер не нужен и идем по стандартному пути spring security?

  • @shurik_codes

    @shurik_codes

    2 ай бұрын

    Не совсем - нужно использовать свою реализацию JwtAuthenticationConverter, которая подтянет роли из нужного источника

  • @user-lg9wf8sy9t
    @user-lg9wf8sy9t10 ай бұрын

    а по SAML будет что-нибудь подобное?

  • @shurik_codes

    @shurik_codes

    10 ай бұрын

    Может быть, обещать не буду

  • @paradiesd
    @paradiesd10 ай бұрын

    Привет, подскажи пожалуйста, почему мы ROLE_MANAGER в realm_access -> roles . А не в scope, который изначально предусмотрен? Для чего тогда нужен вообще scope ?

  • @shurik_codes

    @shurik_codes

    10 ай бұрын

    Потому что это немного разные вещи) В scope указываются ресурсы, к которым предъявитель ключа доступа имеет доступ, scope по сути отвечает на вопрос "что доступно предъявителю ключа?", а роли отвечают на вопрос "кем является предъявитель ключа?". Если проект изначально разрабатывать исходя из механизмов авторизации, реализуемых в OAuth, то такие "финты ушами", скорее всего, не понадобятся. Впрочем в корпоративных проектах RBAC распространён очень сильно, и там нужно получать информацию о ролях пользователя.

  • @paradiesd

    @paradiesd

    10 ай бұрын

    @@shurik_codes Спасибо большое, как раз не мог понять, думал а почему бы тогда сразу роли не пихать в scope чтобы они стандартным конвентором не попадали в Authentication

  • @mccayl5878

    @mccayl5878

    Ай бұрын

    @@shurik_codes scope имеет только client, но client != user, чтобы дальше следовать протоколу oauth мне нужно для каждого user'a создавать свой client? Тоже не круто, потому что client - это больше про приложение, а не пользователя (владельца ресурсов), как мне стоит поступить в этой ситуации, если в проекте предполагается наличие разного доступа у разных пользователей и при этом хочется дальше следовать протоколу, не придумывая каких-то костылей, в токене не следует хранить sensetive data, я думаю, что роли - это немного sesetive data. Какое решение подойдет для прода в этой ситуации?

  • @shurik_codes

    @shurik_codes

    Ай бұрын

    @@mccayl5878 получать роли из userinfo-эндпоинта

  • @user-zr7bb7dc2e
    @user-zr7bb7dc2e5 ай бұрын

    Привет. Есть такая проблема. Если я создал роль например ROLE_ADMIN и в requestMatchers добавил hasRole("ADMIN") тогда мне прилетает 403. и в дебаге методы jwtAuthenticationConverter даже не вызываются. Но если я временно поставлю permitAll() запущу, а потом верну обратно, все работает как надо. В чем может быть проблема ?

  • @shurik_codes

    @shurik_codes

    5 ай бұрын

    Сложно сказать, надо видеть конфиг и настройки реалма в Keycloak

  • @user-zr7bb7dc2e

    @user-zr7bb7dc2e

    5 ай бұрын

    @@shurik_codes Все то же самое , что и на видео. Только без клиента, запрос приходит с фронта на реакте. Хотя через постман с тем же токеном пробовал, было то же самое. Второй раз такое. В первый раз на Винде было, потом я убунту поставил, с гита склонировал проекты заново настроил кейклок, и то же самое. Сначала долго думал, что за фигня потом вспомнил, как я от этого в первый раз избавился, и то же сработало

  • @shurik_codes

    @shurik_codes

    5 ай бұрын

    Тогда могу предположить, что 403 ошибка связана либо с CORS, либо с CSRF, надо включить трассировку запросов в Spring Security и посмотреть, на каком шаге возникает ошибка

  • @MarselGaisin
    @MarselGaisin8 ай бұрын

    13:54