А такой вопрос никак не могу понять почему с GetMapping("/all") работает все (хотя тело запроса должно отправлятся в POST). А если поставить PostMapping то уже ошибка 401. Как так то?
@@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; }
@@NerzonIT Я немного перепутал сверху вместо запроса /all там /auth. Но суть проблемы та же, в AuthController данный метод: @GetMapping("/auth") public String auth(@RequestBody AuthDTO authDTO) { ... } Здесь видно что в GET запросе передается тело запроса, и все работает, тело передается, ответ с сервера приходит, все хорошо. Но как только я заменяю вместо GetMapping ставлю PostMapping то данный запрос перестает работать, и приходит ошибка 401 (не авторизован). Просто не могу понять почему тело запроса работает с GET а POST отказывается напрочь работать. PS: В Postman я не забыл изменить с GET запроса на POST.
Скорее всего проблема с настройкой keycloak. У меня было что-то подобное, как я помню, решилось тем, что я просто забыл привязать роль к пользователю (или установить пароль)
У меня вообщем то проблема была с бесконечной отправкой запроса. Я просто в пользователя поставил галочку рядом с "Verified email", вписал рандомные данные в email, First name, Last name и получил токен
Тема очень интересная. Вы показали быструю настройку, что прикольно, но почему то не работает. Полностью переписал код с видео, при запросе в postman токены возвращаются, а через приложения нет. Пишет ошибка 401 даже не заходит в контроллер /auth. Скачал ваш код, настроил ещё раз keycloak все равно ничего не заработало. Та же ситуация, через postman все хорошо, при использовании /auth ошибка 401. Начал разбираться с Spring Security попробовал заменить вот это .anyRequest().authenticated() на вот это .anyRequest().permitAll() и попробовал подергать другие запросы теперь на все ручки он выдает ошибку 403. Почему все ручки заблокированы если они все должны быть открыты? Подскажите в какую сторону надо копать?
Здравствуйте, если я правильно понимаю, то дело в настройке keycloack, лучше всего скиньте на почту pavel.stanislavovich.ge@gmail.com более подробную информацию, но перед этим перепроверьте все, в том числе мелочи (версии, значения).
классная темка с Keycloak
😇
увидел видос - заранее лайкнул
полезная тема, может пригодится
Спасибо большое!
Вот это я удачно зашел, минуту назад видос вышел ) Спасибо, лайк заранее
😇 Благодарю ❤️
Этот материал я долго искал, ибо использовал JWT без сервера авторизации.
Очень рад, что смог помочь😇
@@NerzonIT На какие темы еще планируешь записать видосы в ближайшее время?
P.S. Я джун, твои уроки очень полезны оказались для меня.
Здесь выпускаю анонсы и много другого интересного - t.me/NerzonChannel
На тему следующего обзора можете повлиять и вы😇
@@nikolay8116 Планирую на этот неделе рассказать про тестирование SpringBoot приложения, а пока работаю над курсом по языку Java😇
Хотелось бы увидеть ELK или Loki & Graphana
предлагаю добавить в приложение интеграцию с minio для хранения данных )
Возьму на заметку! S3 это круто!
А такой вопрос никак не могу понять почему с GetMapping("/all") работает все (хотя тело запроса должно отправлятся в POST). А если поставить PostMapping то уже ошибка 401. Как так то?
Извините, пожалуйста, уточните, что работает? GET используем для получения данных с сервера, POST для их установки туда.
@@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;
}
@@NerzonIT Я немного перепутал сверху вместо запроса /all там /auth. Но суть проблемы та же, в AuthController данный метод:
@GetMapping("/auth")
public String auth(@RequestBody AuthDTO authDTO) {
...
}
Здесь видно что в GET запросе передается тело запроса, и все работает, тело передается, ответ с сервера приходит, все хорошо. Но как только я заменяю вместо GetMapping ставлю PostMapping то данный запрос перестает работать, и приходит ошибка 401 (не авторизован). Просто не могу понять почему тело запроса работает с GET а POST отказывается напрочь работать.
PS: В Postman я не забыл изменить с GET запроса на POST.
У меня при попытке получить токен "error_description": "Account is not fully set up"
Скорее всего проблема с настройкой keycloak. У меня было что-то подобное, как я помню, решилось тем, что я просто забыл привязать роль к пользователю (или установить пароль)
@@NerzonIT Решилось удалением пароля и созданием нового. Теперь не могу авторизоваться и получить токен из самого веб приложения( Получаю 401
@@midnight2954 Не было больше этой проблемы? Вроде бы все сделал, а все равно не пашет
У меня вообщем то проблема была с бесконечной отправкой запроса.
Я просто в пользователя поставил галочку рядом с "Verified email", вписал рандомные данные в email, First name, Last name и получил токен
@@tendze4206 да, такой же метод решения помог)
помогите пожалуйста, когда отправляю запрос через postman для получения jwt токена ничего не грузит. просто бесконечная отправка запроса
Здравствуйте! Убедитесь, пожалуйста, что у вас запущен keycloak и что URl с параметрами передан корректно.
@@NerzonIT переделал и перепроверял раз 10. Не знаю почему не работает :((
Если бы какие то данные были неверны, то ответ про это вернулся бы сразу
@@NerzonIT Еще я заметил, что галочка рядом с microprofile-jwt пропадает, когда обновляю страницу
@@tendze4206То же самое, решил как-то?"
Галочку напротив microprofile-jwt ставить не нужно. Это просто выборка, ничего не произойдёт.
Тема очень интересная. Вы показали быструю настройку, что прикольно, но почему то не работает.
Полностью переписал код с видео, при запросе в postman токены возвращаются, а через приложения нет. Пишет ошибка 401 даже не заходит в контроллер /auth. Скачал ваш код, настроил ещё раз keycloak все равно ничего не заработало. Та же ситуация, через postman все хорошо, при использовании /auth ошибка 401.
Начал разбираться с Spring Security попробовал заменить вот это .anyRequest().authenticated() на вот это .anyRequest().permitAll() и попробовал подергать другие запросы теперь на все ручки он выдает ошибку 403.
Почему все ручки заблокированы если они все должны быть открыты?
Подскажите в какую сторону надо копать?
Здравствуйте, если я правильно понимаю, то дело в настройке keycloack, лучше всего скиньте на почту pavel.stanislavovich.ge@gmail.com более подробную информацию, но перед этим перепроверьте все, в том числе мелочи (версии, значения).