Keycloak Admin REST-API Синхронизировать сопоставление федерации - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Keycloak 9.0.3 с федерацией пользователей LDAP, режим редактирования = WRITABLE и Импорт пользователей = вкл. Я занимаюсь разработкой весеннего загрузочного приложения, которое должно вызывать API Keycloak REST для создания, обновления, удаления users и groups в LDAP. Я также создал «group-ldap-mapper» в своей федерации пользователей, чтобы сопоставить LDAP-группы с Keycloak-Groups и наоборот.

Мне нужно создать и удалить Keycloak-groups через REST API, и они привязаться к группам в LDAP, используя маппер выше. Когда мое приложение вызывает POST / {realm} / groups Keycloak просто создает группу в Keycloak-DB и не синхронизируется с LDAP, если группа не назначена какому-либо пользователю. Это на самом деле не большая проблема. Настоящая проблема заключается в том, что мое приложение удаляет группу с помощью DELETE / {realm} / groups / {id} . Группы удаляются из Keycloak-DB, но не из LDAP. Приемлемым обходным решением будет вызов POST / {realm} / user-storage / {parentId} / mappers / {id} / syn c, который синхронизирует группы и выполняет работу.

Проблема в этом обходном пути в том, что нет способа получить идентификатор сопоставителя федерации ({id}), кроме как жестко его кодировать в приложении Spring. Не существует REST-Call для программного получения этого идентификатора.

Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 27 апреля 2020

Я выяснил, как программно найти идентификаторы федерации и group-ldap-mapper, чтобы использовать их в вызове POST / {realm} / user-storage / {parentId} / mappers / {id} / syn c.

Можно вызвать GET / {realm} / components. Это возвращает в числе прочего федерацию и картографов. В моем случае я мог найти идентификатор федерации в UserRepresentation, а затем использовал его для фильтрации компонентов (parent = {идентификатор федерации}). Согласно документации, есть также тип Query, но я не могу определить правильное значение.

...