Как получить информацию о Keycloak через REST без роли администратора - PullRequest
0 голосов
/ 26 октября 2019

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

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

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Я думаю, что вы используете 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

Авторизация: Носитель Gp7b5hiURKpWzEXgMJP38EnYimgxlBC1PpS2zGXUqe

0 голосов
/ 05 ноября 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 (Клиенты -> {идентификатор клиента} -> вкладка Картографы)

...