Легкая настройка SECURITY в REST API | Протокол OAuth 2 | Keycloak SpringBoot 3

Поделиться
HTML-код
  • Опубликовано: 21 ноя 2024

Комментарии • 32

  • @kanap9
    @kanap9 8 месяцев назад +6

    классная темка с Keycloak

  • @roseny9347
    @roseny9347 8 месяцев назад +3

    увидел видос - заранее лайкнул
    полезная тема, может пригодится

    • @NerzonIT
      @NerzonIT  8 месяцев назад

      Спасибо большое!

  • @eduardklygunov1412
    @eduardklygunov1412 8 месяцев назад +2

    Вот это я удачно зашел, минуту назад видос вышел ) Спасибо, лайк заранее

    • @NerzonIT
      @NerzonIT  8 месяцев назад

      😇 Благодарю ❤️

  • @nikolay8116
    @nikolay8116 8 месяцев назад +2

    Этот материал я долго искал, ибо использовал JWT без сервера авторизации.

    • @NerzonIT
      @NerzonIT  8 месяцев назад

      Очень рад, что смог помочь😇

    • @nikolay8116
      @nikolay8116 8 месяцев назад +1

      @@NerzonIT На какие темы еще планируешь записать видосы в ближайшее время?
      P.S. Я джун, твои уроки очень полезны оказались для меня.

    • @NerzonIT
      @NerzonIT  8 месяцев назад +1

      Здесь выпускаю анонсы и много другого интересного - t.me/NerzonChannel
      На тему следующего обзора можете повлиять и вы😇

    • @NerzonIT
      @NerzonIT  7 месяцев назад +1

      @@nikolay8116 Планирую на этот неделе рассказать про тестирование SpringBoot приложения, а пока работаю над курсом по языку Java😇

  • @demorganbtw
    @demorganbtw 5 часов назад

    Хотелось бы увидеть ELK или Loki & Graphana

  • @user-zx5sv3hb2u
    @user-zx5sv3hb2u 8 месяцев назад +1

    предлагаю добавить в приложение интеграцию с minio для хранения данных )

    • @NerzonIT
      @NerzonIT  8 месяцев назад +1

      Возьму на заметку! S3 это круто!

  • @DanielKomnin
    @DanielKomnin 2 месяца назад

    А такой вопрос никак не могу понять почему с GetMapping("/all") работает все (хотя тело запроса должно отправлятся в POST). А если поставить PostMapping то уже ошибка 401. Как так то?

    • @NerzonIT
      @NerzonIT  2 месяца назад

      Извините, пожалуйста, уточните, что работает? GET используем для получения данных с сервера, POST для их установки туда.

    • @DanielKomnin
      @DanielKomnin 2 месяца назад

      @@NerzonIT Я имею ввиду в контроллере AuthController используется GetMapping("/auth"). (Выше я перепутал написал /all).
      При этом в GetMapping мы передаем @RequestBody (в GET запрос) и все работает. Но если я ставлю @PostMapping("/auth") - то уже не работает, и приходит ошибка 401 (необходимо авторизоваться)
      Вот рабочий код с GET и телом запроса:
      @GetMapping("/auth")
      public String auth(@RequestBody AuthDTO authDTO) {
      var headers = new HttpHeaders();
      headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
      var body = "client_id=" + clientId +
      "&username=" + authDTO.login() +
      "&password=" + authDTO.password() +
      "&grant_type=" + grantType;
      var requestEntity = new HttpEntity(body, headers);
      var restTemplate = new RestTemplate();
      var response = restTemplate.exchange(
      resourceUrl,
      HttpMethod.POST,
      requestEntity,
      String.class
      );
      if (response.getStatusCode().value() == 200) {
      return response.getBody();
      }
      return null;
      }

    • @DanielKomnin
      @DanielKomnin 2 месяца назад

      @@NerzonIT Я немного перепутал сверху вместо запроса /all там /auth. Но суть проблемы та же, в AuthController данный метод:
      @GetMapping("/auth")
      public String auth(@RequestBody AuthDTO authDTO) {
      ...
      }
      Здесь видно что в GET запросе передается тело запроса, и все работает, тело передается, ответ с сервера приходит, все хорошо. Но как только я заменяю вместо GetMapping ставлю PostMapping то данный запрос перестает работать, и приходит ошибка 401 (не авторизован). Просто не могу понять почему тело запроса работает с GET а POST отказывается напрочь работать.
      PS: В Postman я не забыл изменить с GET запроса на POST.

  • @midnight2954
    @midnight2954 7 месяцев назад +2

    У меня при попытке получить токен "error_description": "Account is not fully set up"

    • @NerzonIT
      @NerzonIT  7 месяцев назад

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

    • @midnight2954
      @midnight2954 7 месяцев назад

      @@NerzonIT Решилось удалением пароля и созданием нового. Теперь не могу авторизоваться и получить токен из самого веб приложения( Получаю 401

    • @ArthurMorgan_01
      @ArthurMorgan_01 7 месяцев назад

      @@midnight2954 Не было больше этой проблемы? Вроде бы все сделал, а все равно не пашет

    • @tendze4206
      @tendze4206 5 месяцев назад

      У меня вообщем то проблема была с бесконечной отправкой запроса.
      Я просто в пользователя поставил галочку рядом с "Verified email", вписал рандомные данные в email, First name, Last name и получил токен

    • @ArthurMorgan_01
      @ArthurMorgan_01 5 месяцев назад

      @@tendze4206 да, такой же метод решения помог)

  • @tendze4206
    @tendze4206 5 месяцев назад

    помогите пожалуйста, когда отправляю запрос через postman для получения jwt токена ничего не грузит. просто бесконечная отправка запроса

    • @NerzonIT
      @NerzonIT  5 месяцев назад

      Здравствуйте! Убедитесь, пожалуйста, что у вас запущен keycloak и что URl с параметрами передан корректно.

    • @tendze4206
      @tendze4206 5 месяцев назад

      @@NerzonIT переделал и перепроверял раз 10. Не знаю почему не работает :((
      Если бы какие то данные были неверны, то ответ про это вернулся бы сразу

    • @tendze4206
      @tendze4206 5 месяцев назад

      ​@@NerzonIT Еще я заметил, что галочка рядом с microprofile-jwt пропадает, когда обновляю страницу

    • @yurakochubailo1136
      @yurakochubailo1136 3 месяца назад

      @@tendze4206То же самое, решил как-то?"

  • @darkson4613
    @darkson4613 25 дней назад

    Галочку напротив microprofile-jwt ставить не нужно. Это просто выборка, ничего не произойдёт.

  • @АнтонТокмаков-ь1ф
    @АнтонТокмаков-ь1ф Месяц назад

    Тема очень интересная. Вы показали быструю настройку, что прикольно, но почему то не работает.
    Полностью переписал код с видео, при запросе в postman токены возвращаются, а через приложения нет. Пишет ошибка 401 даже не заходит в контроллер /auth. Скачал ваш код, настроил ещё раз keycloak все равно ничего не заработало. Та же ситуация, через postman все хорошо, при использовании /auth ошибка 401.
    Начал разбираться с Spring Security попробовал заменить вот это .anyRequest().authenticated() на вот это .anyRequest().permitAll() и попробовал подергать другие запросы теперь на все ручки он выдает ошибку 403.
    Почему все ручки заблокированы если они все должны быть открыты?
    Подскажите в какую сторону надо копать?

    • @NerzonIT
      @NerzonIT  Месяц назад

      Здравствуйте, если я правильно понимаю, то дело в настройке keycloack, лучше всего скиньте на почту pavel.stanislavovich.ge@gmail.com более подробную информацию, но перед этим перепроверьте все, в том числе мелочи (версии, значения).