Как получить информацию о пользователе Keycloak через REST без роли администратора

Я использую keycloak в качестве сервера авторизации. Пользователи отправляют собственное имя пользователя и пароль MyWebApp и MyWebApp, где grant_type: password получает токен, а затем токен ответа пользователю. Теперь я хочу, чтобы мои пользователи могли получать свою информацию, изменять свой пароль и все, что связано с ними НАСЛАЖДАЙСЯ. Когда я отправляю запрос на отдых /{realm}/users/{id} для получения информации о пользователе, Keycloak получает ответ об ошибке 403. Как я могу получить информацию о пользователе без прав администратора из keyclaok?

Примечание. Я видел этот вопрос , Но я хочу также предоставить пользователю профиль редактирования.


person Morteza Malvandi    schedule 26.10.2019    source источник


Ответы (2)


Я думаю, вы используете Oauth с Grant type = password. Если указанный вами токен сгенерирован Keycloak. Вы можете запросить информацию о пользователе в Keycloak, используя конечную точку / userinfo.

Это пример конечной точки:

"http://localhost:8080/auth/realms/demo/protocol/openid-connect/userinfo "

Вот как отправить параметры: https://connect2id.com/products/server/docs/api/userinfo

GET / userinfo HTTP / 1.1

Хост: c2id.com

Авторизация: Bearer Gp7b5hiURKpWzEXgMJP38EnYimgxlBC1PpS2zGXUqe

person Hlex    schedule 04.11.2019

Насколько мне известно, в новых версиях Keycloak приложение Account (~/auth/realms/{realm}/account) будет реализовано как серверная часть REST, поэтому ваши пользователи смогут работать с данными своего профиля в режиме RESTful (см. Keycloak блог).

Если вы не можете слишком долго ждать появления такой функции, вы можете реализовать свой собственный бэкэнд REST для операций с профилями пользователя. Это означает, что вам необходимо реализовать Поставщик услуг конечной точки REST и интегрировать в этот API свой настраиваемый набор ролей Keycloak (вы также можете реализовать конечную точку без проверок каких-либо ролей, поэтому требуется только аутентификация носителя). Проверьте документацию по разработке Keycloak, также вы можете использовать исходные коды Keycloak, особенно пакет org.keycloak.services.resources.admin в качестве примера реализации.

PS. Для просмотра информации о пользователе рассмотрите возможность использования конечной точки OIDC для информации о пользователе (см. Ответ Hlex). Его также можно настроить с помощью карт OIDC (клиенты -> {client Id} -> вкладка Mappers).

person solveMe    schedule 04.11.2019