我正在寻找查询 LDAP 服务器以从中检索所有用户条目。我遇到了一些图书馆
我的要求是查询像 AD 服务器这样的 LDAP 实现中的所有用户,易于编程和图书馆周围的良好社区。我在这里找不到明显的赢家。有人能告诉我广泛使用且强大的 API 吗?
我正在寻找查询 LDAP 服务器以从中检索所有用户条目。我遇到了一些图书馆
我的要求是查询像 AD 服务器这样的 LDAP 实现中的所有用户,易于编程和图书馆周围的良好社区。我在这里找不到明显的赢家。有人能告诉我广泛使用且强大的 API 吗?
与 Java 一起使用的最佳 API 是UnboundID LDAP SDK。它清晰、完整、完全实现了 LDAP 标准规范、易于使用和理解、文档齐全、线程安全,而且标准版是免费的。甚至没有其他 API 可以接近。
不得不潜入 Java LDAP SDK 市场,因为一些带有 SDK 错误的旧 LDAP JAVA 程序需要修复,而且我有一段时间失去了对支持的 Java LDAP API 的最新概述。一些研究让我看到了几个古老的概述和这个相当古老的线程。我想,我只是在这里分享我更新的 SDK 发现。
到目前为止,Java LDAP SDK 市场似乎提供了以下功能:
jLDAP(Novell Java LDAP SDK)、OpenLDAP Java SDK(Novell LDAP SDK 的兄弟分支)、Netscape/Sun Java LDAP SDK、OpenDS LDAP SDK:所有 4 个存储库似乎实际上已经死掉/无人维护了好几年(其中一些已经有十年了) ) 现在。看不到支持公司或活跃的社区。
Oracle LDAP SDK:基本上是以前的 Netscape/Sun Java SDK,有付费的 Oracle 支持,但也没有维护。甚至在开源世界中都不存在。
OpenDJ Java LDAP SDK:支持公司已经远离开源市场,不再维护这个 SDK。最新的 SDK 版本 3.0.0 已经有好几年了,从未离开 beta 阶段,最新的官方发布版本更早:2.6.11。据说 SDK 的商业版本也几乎被放弃了。
ldaptive.org:一些大学项目。以前的 JNDI 包装器,但现在声称拥有自己的 LDAP SDK 协议实现。在大学外围似乎没有社区或用户。没有死,但目前还不清楚,这里可以期待什么质量状态。如果你问我,这个项目会做得更好,花时间支持 Apache LDAP SDK 项目,因为实际上没有人需要另一个look-mom-I-also-made-an LDAP-Client-SDK在一个充满其他大多数平庸的 JAVA LDAP SDK 的饱和市场中。
Apache LDAP SDK:与其他 Apache 项目相比,LDAP SDK 的速度确实很慢。不知何故,Apache LDAP 似乎错过了一个真正的公司支持的东西,它只是有才华的爱好爱好者推动事情向前发展。您可能不想使用 SDK V1.0 开始任何新项目,因为它们声明 V2.0 破坏了接口代码。但是您可能还不想使用 SDK V2.0,因为它仍然是 beta 版,没有人知道它会保持 beta 多长时间(V1 保持 beta 6 年......)。SDK 远未消亡,它只是显示出非常缓慢的进展。
Java JNDI:自古以来就内置在 Java 中,自发布以来就没有改变。Still 对于编码来说真的很难看,文档是一团糟,除了基本搜索之外的每项任务都是实现的噩梦,基本上每个项目都无法正确实现它,有几件事被设计破坏了。似乎有一些关于未来 JDK 的 JNDI-LDAP 继任者的概念想法,但到目前为止还没有遵循。
无绑定SDK:成熟的,维护最好的SDK,功能丰富,但背后的公司还是风投,烧钱。到目前为止,看起来他们不会很快站起来。因此,SDK 支持的长期方面尚不清楚。商业项目中 SDK 的前党员曾经是它的 GPL 许可证。开源版本现在似乎也有 LGPL 许可证(可能适合也可能不适合项目)。
Spring:似乎是一个稳定的 LDAP SDK,而且拥有庞大的 Spring 社区。但功能较少且没有最前沿的东西。虽然个人还没有使用此 SDK 的经验。
所以现在,Java LDAP 似乎有四个合理的选择:JNDI、Unbound、Spring、Apache,各有优缺点。一旦你开始使用 JNDI,你可能会非常讨厌它。一个好的建议可能是,不要急于迁移旧 SDK 的项目,而是投入额外的精力来实现包装器代码,以便以后在需要时能够轻松地切换 SDK。
检查Apache Directory Client API,它是开源的并且有一个活跃的社区(完全披露:我从事 Apache Directory 项目),最重要的是 Apache Directory Client 默认支持所有基本的 LDAP 控件,包括密码策略和 syncrepl,这与一些支持这些的商业版本不同仅在付费版本中。
如果需要,您可以轻松添加新的/自定义控件和扩展操作,并且在注释驱动的测试框架的帮助下启动内存目录服务器非常容易
查看此示例,了解如何利用 API 和测试框架进行单元测试。
而且,如果您在单元测试中需要 Kerberos v5 服务器,它只是一个注释。
我们使用 UnboundID LDAP SDK。很好,有很多例子和很好的支持。
对 JLDAP 和 Mozilla 目录 API 的支持和维护不佳是我们退出使用它们的原因。
像https://wiki.mozilla.org/LDAP_Java_SDK不存在。JLDP sdk 已多年未更新。(我记得是 2009 年)。
我在生产中使用https://www.ldaptive.org/,到目前为止我很高兴它就像“ORM”
还有来自 Imperva 的开源库https://github.com/imperva/domain-directory-controller
在那里你可以找到一个很好的查询示例。