Client, Resource Server, Login - Spring Security OAuth 2.0

Поділитися
Вставка
  • Опубліковано 1 січ 2025

КОМЕНТАРІ • 37

  • @НикитаКорнюхин-я6щ
    @НикитаКорнюхин-я6щ 10 місяців тому +3

    Офигеть какой полезный контент по такой тяжелой теме. Придется пересматривать не один раз, чтобы так же быстро все понимать. Отдельное спасибо за демонстрацию для реактива!

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

    Круто! Ролик и интересен и ОЧЕНЬ полезен 👍 Спасибо!

  • @Hocorend
    @Hocorend 7 місяців тому +2

    Супер урок, впервые попал на канал, ощущение, что нашел золото в интернете xD Теперь я понял, что надо и другие ролики посмотреть

  • @omonullo
    @omonullo 10 місяців тому +2

    Не смотрел. Просто лайк за труд.
    Сейчас уже начну смотреть 😊

  • @vital708
    @vital708 11 місяців тому

    Лайк сразу. Имею пару лет коммерческого опыта, но смотря ваши видео понимаю, что я очень многого не знаю и как минимум на вашем канале есть огромное пространство для саморазвития, это круто. Спасибо ))

  • @ВладимирМаксимов-д1з
    @ВладимирМаксимов-д1з 10 місяців тому +1

    Спасибо большое за качественно изложенный материал и Ваш труд

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

    Нравится звук клавиатуры, слышно работу поограммиста!

  • @AlexSmile-y2x
    @AlexSmile-y2x 10 місяців тому +1

    Мега полезный материал! Нереально крутой спец и видео подготовлено великолепно. Спасибо! Попробую разобраться, почему в реактивном варианте не настраивается проверка как скоупа, так и роли)

    • @shurik_codes
      @shurik_codes  10 місяців тому

      Да настраивается она там, но там получается очень весёлый порядок действий получается, реактивный) Возможно, я не нашёл нужный компонент

  • @pavelthecreators
    @pavelthecreators 11 місяців тому

    Спасибо большое, ты лучший!)

  • @tomervercetti
    @tomervercetti 8 місяців тому +1

    9:25 - resource
    25:12 - reactive resource
    32:08 - client
    1:02:40 - reactive client

  • @devprototype
    @devprototype 10 місяців тому +1

    Спасибо за видео!
    31:40 stateless session creation policy нужно было ставить?

    • @shurik_codes
      @shurik_codes  10 місяців тому

      По идее надо, но в реактивных API это делается при помощи http.securityContextRepository(NoOpServerSecurityContextRepository.getInstance())

  • @insurg
    @insurg 18 днів тому

    спасибо большое, очень полезный урок!
    единственное - это что не было показано создание UserController и содержимое greetings.html с user.html, из-за чего я сначала был потерялся и не понимал, почему не работает как на видео. Пришлось залезть в репозиторий, чтобы стянуть файлы оттуда, и только потом завелось :)
    появился такой вопрос: в более раннем видео под названием Keycloak и Spring Security ты когда описывал бины, то часто использовал var'ы внутри метода, здесь же ты используешь определенные типы. Этому есть причина?
    и второй мини-вопросец: как сделать такую же цельную стрелку "->" и "!=" в виде перечеркнутого равно? :)

  • @ПВ211ТищенкоДаниил
    @ПВ211ТищенкоДаниил 10 місяців тому +1

    Привет, очень просим подробнее про настройку безопасности в Spring Boot и logout в Keycloak'e, ибо при логауте пользователь остается аутентифицированным, как это исправить в интернете не нахожу

  • @MgsMen
    @MgsMen 3 місяці тому +2

    Спасибо большое за ролик ! Вопрос: как стать таким же крутым ? Постоянна практика + чтение доки и книг ? Либо надо IQ > 120 ?

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

      Чтение документации, книг, статей, применение на практике с последующим анализом, ну и IQ тоже полезен будет)

  • @a.kondratenko
    @a.kondratenko 10 місяців тому +1

    Спасибо за материал! Пересмотрел уже десятки видео на канале. Видео, благодаря качеству материала и подаче, получаются просто бесценными!
    Можете подсказать, какие-то отличия в реализации есть, если в роле клиента будет android-приложение?

    • @shurik_codes
      @shurik_codes  10 місяців тому +1

      Нет, отличий не будет, android-приложение будет клиентом без client secret, поэтому желательно использовать grant_type=authorization_code с PKCE.

    • @a.kondratenko
      @a.kondratenko 10 місяців тому

      @shurik_codes Спасибо за фидбек! Буду разбираться. Тогда я бекенд делаю просто защищенным с помощью кейклока, а фронт-приложение делаю клиентом, который будет бегать в кейклок за токеном для юзера

  • @KakoitoTam
    @KakoitoTam 10 місяців тому

    Спасибо за видео, а такой вопрос если в связке oauth2(client/server)-jwt надо валидировать токен. к примеру не аунтифицированных отправлять в keycloack не авторизованных на микросервис авторизации и тд как и где это реализовать лучше, хотелось бы библиотеку

    • @shurik_codes
      @shurik_codes  10 місяців тому +1

      Ну, токен и так валидируется, как на стороне клиента (при логине), так и на стороне сервера ресурсов. Перенаправление на страницу авторизации есть при OAuth логине, а на стороне сервера ресурсов в нём нет смысла, т.к. пользователь напрямую не взаимодействует с сервером ресурсов, это делает клиент - приложение или другой сервис.

    • @KakoitoTam
      @KakoitoTam 10 місяців тому

      Спасибо большое за ответ! Сейчас разрабатываем security service никто не сталкивался раньше. И мне сегодня поступила задача сделать библиотеку которая валидирует токен.и хотелось бы ее переиспользовать в других будущих микросервисах. Я так понял в кейклок у нас будет аунтефикация, в ресурсом сервисе авторизация(в процессе еще oauth2 подключать).Видимо (из Вашего ответа) мне надо просто написать клиентскую часть. библиотека которая редиректит если не аунтефицирован или не авторизован или токен протух то иди в автори сервис к примеру. Я так понял отдельный класс с кучей if лучше не делать, сейчас смотрю как раз про Oauth2AutorizedClient Manager --это там можно все сделать?) Сейчас как раз смотрю ваши видео, лучше по security нету следующие про jwt токены буду смотреть.@@shurik_codes

  • @paradiesd
    @paradiesd 10 місяців тому +2

    Привет, очень полезное видео, спасибо большое
    Подскажи пожалуйста, как часто вызывается oidcUserService ? при каждом запросе или нет?

    • @shurik_codes
      @shurik_codes  10 місяців тому

      При аутентификации, после - создаётся HTTP-сессия и данные пользователя сохраняются в ней

    • @paradiesd
      @paradiesd 10 місяців тому

      @@shurik_codes спасибо огромное

  • @Boraldan
    @Boraldan 10 місяців тому

    Спасибо! Такой вопрос: если мы используем Spring Cloud Eureka server, client, gateway - то OAuth2 client куда лучше внедрят front или gateway?

    • @shurik_codes
      @shurik_codes  10 місяців тому

      Не совсем понятна схема взаимодействия. Если брать Eureka Server и Client, то Server - OAuth 2.0 Resource Server, а Client - OAuth 2.0 Client

    • @lifewinsful
      @lifewinsful 10 місяців тому +1

      @@shurik_codes тут, вопрос, наверное, о том, где лучше имплементировать oauth2 - на фронте или на gateway

    • @shurik_codes
      @shurik_codes  10 місяців тому +1

      Если честно, то яснее не стало) В OAuth 2.0 предусмотрено две основные роли: клиент (приложение, обращающееся к защищённым ресурсам) и сервер ресурсов (приложение, содержащее защищённые данные). Фронт в моём понимании - это какое-то клиентское приложение (нативное или веб), а шлюз (gateway) - по сути входная точка и маршрутизатор запросов к бекендам.
      Можно ли сделать OAuth-клиентом шлюз? В теории - да, можно, если предоставление полномочий реализуется при помощи учётных данных клиента (grant_type=client_credentials). В этой ситуации фронт обращается к шлюзу, шлюз получает ключ доступа и добавляет его в заголовки при маршрутизации запроса к бекенду. Вопрос аутентификации и авторизации клиента остаётся открытым.
      Можно ли сделать шлюз сервером ресурсов OAuth? Опять же, да, можно, но на стороне бекендов не будет информации о конечном пользователе, если её только не пробрасывать какими-то окольными путями.
      Но оба варианта предполагают внесение изменений в шлюз, что само по себе не совсем удобно - т.к. вариантов тут много (Spring Cloud Gateway, k8s ingress, isio и т.д.)
      Наиболее логично на мой взгляд делать фронт OAuth-клиентом, а бекенд - сервером ресурсов, и не включать в схему авторизации шлюз.

    • @Boraldan
      @Boraldan 10 місяців тому

      @@shurik_codes спасибо, Александр. Буду разбираться.

  • @ram0973
    @ram0973 5 місяців тому

    А со спринговым сервером авторизации нет видео, что-то не нашёл?

  • @АртемФедоров-р4ч
    @АртемФедоров-р4ч 10 місяців тому

    Привет, каким линуксом пользуешся ?

  • @ratmirv
    @ratmirv 4 місяці тому

    Здравствуйте, подскажите пожалуйста. Пытаюсь настроить OAuth2 через Google для аутентификации и регистрации пользователей. В доке написано, чтобы настроить "post-handling of the UserInfo Response", нужно переопределить OidcUserService. В вашем примере вы преобразовали список прав в этом месте.
    @Bean
    public OAuth2UserService oidcUserService() {}
    Правильно ли я понимаю, что я могу в этом же месте добавить логику по регистрации нового пользователя(добавлению в базу данных), извлекая все нужные поля из объекта OidcUser?

    • @shurik_codes
      @shurik_codes  4 місяці тому

      В целом можно, да