【发布时间】:2020-06-01 15:16:08
【问题描述】:
我正在为用户管理应用程序创建一个扩展,该应用程序使用 Spring Data Ldap 存储库维护 OpenLDAP 服务器中的用户以进行身份验证(除了内部数据库),因为该应用程序已经在使用 Spring 5 和 Spring Data 存储库。
基本的用户和组存储库用于查找、创建和更新,但有一个例外:组成员身份,因为成员属性需要完整的 DN(可分辨名称),不幸的是,用户存储库的 @Id 键是一个 相对 DN.
我的 Ldap 基础是“dc=example,dc=com” UserRepository 返回“cn=user1,ou=users” 但我需要完整的 DN:“cn=user1,ou=users,dc=example,dc=com”基本名称从 ApplicationConfig.java 加载到 ContextSource 中,但由于存储库是动态生成的,并且我只定义了一个接口,我不知道如何注入该接口或属性并使用它编写代码。
我还没有找到任何返回完整 DN 的方法。我通过 this question 和来自 Spring LDAP 的 user admin example 找到了看起来像解决方案的方法。但是,这涉及回退到 Spring LDAP LdapTemplate,这是从 Spring Data LDAP 存储库到更通用的查询模型的一步。此外,由于依赖冲突,我无法让示例自行构建或运行,因此我担心混合 Spring Data LDAP 和 Spring Ldap 模板的解决方案的寿命。
我正在寻找的是从用户、组或其存储库类中检索完整 DN 或基本名称的任何方法,以便在将成员添加到组或查找组时提供这些成员。
【问题讨论】: