Как получить дополнительные / дополнительные данные для пользователей, использующих keyclaok rest api? - PullRequest
1 голос
/ 25 мая 2019

Мы используем Keycloak для единого входа, в частности, мы можем использовать REST API /admin/realms/{realm}/users, чтобы получить базовые данные пользователя в области Keycloak, ответ, который мы получаем: UserRepresentation , который, кажется,есть условия для realmRoles и clientRoles , но по умолчанию они не требуются / false.

У нас есть новое требование для выборки ролей всех пользователей, явидим, что для получения этих ролей доступны дополнительные API: /auth/admin/realms/realm/users/user-id/role-mappings/realm/, но это означает запуск другого запроса, а если у нас 2k пользователей, это означает, что запрос на 2k больше.

Мой вопрос как UserRepresentation также имеет свойства realmRoles и clientRoles , но, по-видимому, является необязательным по умолчанию, как я могу включить их во время стрельбызапрос /admin/realms/{realm}/users и избегайте дополнительного запроса на получение ролей.

1 Ответ

0 голосов
/ 15 июня 2019

Боюсь, что получить необходимые данные за один запрос невозможно: просто взглянув на исходный код получения всех пользователей в UsersResource , вы увидите, что realmRoles и clientRoles никогда не заселены.

С учетом вышесказанного есть одна вещь, которую вы можете сделать - написать свой собственный REST-ресурс, внедрив SPI . Фактически, в прошлом у меня была похожая проблема с групповым ресурсом, и я закончил писать свой собственный ресурс. В этом случае вам потребуется написать собственный ресурс одним способом - получить всех пользователей с ролями. Вы можете просто скопировать и вставить текущую логику keycloak и добавить дополнительные биты или расширить встроенный UsersResource. Это, однако, не единственная пуля - в долгосрочной перспективе вам потребуется поддерживать собственный код, и обновления до последней версии ключа могут оказаться не такими простыми, если какой-то интерфейс изменится.

...