簡體   English   中英

用於查詢 LDAP 的 Java API

[英]Java API to query LDAP

我希望查詢 LDAP 服務器以從中檢索所有用戶條目。 我遇到了一些圖書館

  1. 開放式LDAP
  2. LDAP開發工具包
  3. Mozilla 目錄
  4. Apache 目錄 API

我的要求是查詢 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM