WedX - журнал о программировании и компьютерных науках

Поиск пользователей в Keycloak из кода Java

Я использую Spring Boot, Keycloak 10, java 8 и jar keycloak-admin-client. Я могу получить пользователя, его группы и роли.

Когда дело доходит до поиска, я вижу различные варианты методов поиска, например, я мог бы:

 List<UserRepresentation> search = getKeycloakInstance().realm("my-realm").users()
                .search("username");

https://www.keycloak.org/docs-api/10.0/javadocs/org/keycloak/admin/client/resource/UsersResource.html

Но что мне нужно сделать, чтобы написать пару методов:

  • поиск по ролям (поиск пользователей, у которых есть несколько ролей)

  • поиск по группам и групповым атрибутам

  • поиск по тексту (имя, фамилия, адрес электронной почты) в режиме "содержит": mytext

  • поиск по ролям и тексту

  • поиск по списку идентификаторов (uuid пользователей)

Я не вижу таких возможностей в keycloak-admin-client, или возможно, что еще я должен использовать вместо keycloak-admin-client?



Ответы:


1

К сожалению, keycloak-admin-client не предоставляет много возможностей поиска.

Как найти пользователей по ролям:

RoleResource roleResource = getKeycloakInstance().realm("realm_name")
                          .roles().get("role_name");  
roleResource.getRoleUserMembers();

Как найти всех пользователей в группе:

getKeycloakInstance().realm("realm_name").groups().group("your_group").members();

Как найти пользователей по имени пользователя, имени, фамилии, электронной почте:

getKeycloakInstance().realm("my-realm").users()
            .search("username", "lastName", "email");

Если вас устраивает, попробуйте использовать Keycloak Admin REST API, чтобы получить больше возможностей поиска.

02.06.2020
  • Спасибо, а как насчет поиска по идентификаторам пользователя? Что касается групп и ролей, мне придется использовать пару запросов для поиска пользователей сразу с thext, rols и группами. Сам Rest API также не предоставляет такой возможности, как я вижу, поэтому я остановлюсь на jar-файле admin-client. 02.06.2020
  • Я только что проверил реализацию поиска (github.com/keycloak/keycloak/blob/master/services/src/main/java/). Невозможно выполнить поиск по нескольким значениям атрибута. Вы можете искать только по одному идентификатору, имени, роли и так далее. Например, поиск по lastName: search (lastName: mar, 0, 10) вернет первых 10 пользователей, чья фамилия содержит мар. Если вы храните некоторую часть пользовательских данных в своей базе данных приложения и она синхронизируется с базой данных keycloak, я хотел бы порекомендовать вам выполнить поиск в своей базе данных приложения, чтобы быть более гибким. 02.06.2020
  • У меня был коммерческий опыт работы с Keycloak, и я не могу сказать, что был впечатлен. Мы сохранили пользовательские данные в Keycloak, но решили продублировать данные в нашей базе данных приложения, чтобы иметь возможность выполнять гибкий поиск пользователей. Плохо в таком подходе то, что нам нужно синхронизировать пользовательские данные в двух БД. 02.06.2020
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]