[英]Java API to query LDAP
我希望查詢 LDAP 服務器以從中檢索所有用戶條目。 我遇到了一些圖書館
我的要求是查詢 LDAP 實現(如 AD Server)中的所有用戶、易於編程以及圖書館周圍的良好社區。 我在這里找不到明顯的贏家。 有人能告訴我廣泛使用和強大的 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 項目,因為實際上沒有人需要再看看-媽媽-我-也-做了-一個 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 中,自發布以來一直沒有改變。 編碼仍然非常丑陋,文檔是一團糟,基本搜索之外的每項任務都是實現的噩夢,基本上每個項目都無法正確實現它,有幾件事被設計破壞了。 似乎有一些關於未來 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 年)。
還有來自 Imperva https://github.com/imperva/domain-directory-controller 的開源庫
在那里您可以找到一個很好的查詢示例。
我在生產中使用https://www.ldaptive.org/ ,到目前為止我很高興它就像“ORM”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.