Я создаю расширение для приложения управления пользователями, которое поддерживает пользователей на сервере OpenLDAP для аутентификации (в дополнение к внутренней базе данных) с использованием репозиториев Spring Data Ldap, поскольку приложение уже использует репозитории Spring 5 и Spring Data.
Базовые c репозитории пользователей и групп работают для поиска, создания и обновления, за одним исключением: членство в группе, поскольку для атрибута member требуется полное DN (различающееся имя) и, к сожалению, ключ @Id репозитория пользователя является относительным DN.
My Ldap base is "dc=example,dc=com"
The UserRepository returns "cn=user1,ou=users"
but I need the full DN: "cn=user1,ou=users,dc=example,dc=com"
Базовое имя загружается в ContextSource из ApplicationConfig. java, но так как репозитории генерируются динамически, и я определил только интерфейс, Я не знаю, как внедрить это или свойство и написать код, используя его.
Я не нашел ни одного метода, который возвращает полное DN. Я нашел что-то вроде решения через этот вопрос и пример администратора пользователя из Spring LDAP. Однако это включает в себя возврат к Spring LDAP LdapTemplate, который является шагом назад от репозиториев Spring Data LDAP к более общей c модели запросов. Кроме того, я не могу заставить пример создать или запустить сам по себе из-за конфликтов зависимостей, поэтому я беспокоюсь о долговечности решения, которое смешивает Spring Data LDAP и Spring Ldap Templates.
Мне нужен любой способ получить полное DN или базовое имя изнутри User, Group или их классов репозитория, чтобы я мог предоставить их при добавлении членов в группу или при поиске группы для члена.