Интеграция входа в Keycloak для аутентификации при получении запроса REST без страницы входа

У меня есть веб-приложение Java с внутренним управлением идентификацией и доступом. Теперь он был приостановлен с интеграцией Keycloak.

Рядом с веб-интерфейсом мое приложение также имеет конечную точку REST, такую ​​как /api/authentication/login (среди прочего, но это начальная точка), которую можно было вызвать ранее для получения токена через: curl -X POST http://localhost:8080/api/authentication/login -H 'Authorization: admin:admin'.

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

Каковы мои варианты для достижения этого?

Кстати: приложение не использует Spring Boot.

Я попытался добавить новый клиент Keycloak OpenID, который будет охватывать домашний URL-адрес /api, и я также установил для параметра «Аутентификация клиента» значение false, но безрезультатно, т. Е. Я все еще перенаправляюсь на страницу входа в Keycloak.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
273
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Не рекомендуется обходиться без редиректа. Но вы все еще можете достичь с Direct Grant Flow.

https://developers.redhat.com/blog/2020/01/29/api-login-and-jwt-token-generation-using-keycloak?sc_cid=7013a00000313tHAAQ#test_your_new_client

https://stackoverflow.com/a/48255625

Ответ принят как подходящий

Я бы пошел дальше, чем Дхавал, и сказал бы, что не рекомендуется идти по этому пути.

Пользователи должны аутентифицироваться не через ваш API, а напрямую через сервер авторизации (Keycloak). Ни клиенты (UI), ни серверы ресурсов (REST API) не должны получать доступ к секретам пользователей.

Просто настройте свой клиент (пользовательский интерфейс) для перенаправления пользователей на Keycloak для получения токена доступа и отправки этого токена в качестве заголовка авторизации носителя при отправке запросов к серверам ресурсов (REST API). Используйте для этого клиентскую библиотеку OAuth2 (в конечном итоге помеченную OpenID/OIDC).

См. эти руководства для минимальной настройки Keycloak и настройки безопасности серверов ресурсов Spring: https://github.com/ch4mpy/spring-addons/blob/master/samples/tutorials

Другие вопросы по теме