LDAPサーバーにクエリを実行して、そこからすべてのユーザーエントリを取得しようとしています。私はいくつかの図書館に出くわしました
私の要件は、ADサーバー、プログラミングの容易さ、ライブラリ周辺の優れたコミュニティなど、LDAP実装のすべてのユーザーにクエリを実行することです。ここで明確な勝者は見つかりません。広く使用されている堅牢なAPIを教えてもらえますか?
LDAPサーバーにクエリを実行して、そこからすべてのユーザーエントリを取得しようとしています。私はいくつかの図書館に出くわしました
私の要件は、ADサーバー、プログラミングの容易さ、ライブラリ周辺の優れたコミュニティなど、LDAP実装のすべてのユーザーにクエリを実行することです。ここで明確な勝者は見つかりません。広く使用されている堅牢なAPIを教えてもらえますか?
Javaで使用するのに最適なAPIは、UnboundIDLDAPSDKです。明確で、完全で、LDAP標準仕様を完全に実装し、使いやすく、理解しやすく、完全に文書化されており、スレッドセーフである必要があります。標準版は無料です。他のAPIは近づいていません。
SDKのバグがある古いLDAPJAVAプログラムを修正する必要があり、サポートされているJava LDAP APIの最新の概要をしばらく失っていたため、JavaLDAPSDK市場に飛び込む必要がありました。少し調べてみると、いくつかの古い概要とこのかなり古いスレッドにたどり着きました。ここで、最新のSDKの調査結果を共有したいと思いました。
今日の時点で、これはJavaLDAPSDK市場が提供しているようです。
jLDAP(Novell Java LDAP SDK)、OpenLDAP Java SDK(Novell LDAP SDKの兄弟フォーク)、Netscape / Sun Java LDAP SDK、OpenDS LDAP SDK:4つのリポジトリはすべて、数年間は実質的に機能していない/保守されていないようです(そのうちのいくつかは現在10年間です) ) 今。支援企業や活発なコミュニティは見えません。
Oracle LDAP SDK:基本的に、有料のOracleサポートを備えた以前のNetscape / Sun Java SDKですが、それ以外は保守されていません。オープンソースの世界にも存在しません。
OpenDJ Java LDAP SDK:支援会社はオープンソース市場から離れ、このSDKを維持しなくなりました。最新のSDKバージョン3.0.0はすでに数年前のものであり、ベータ段階を離れることはありません。最新の公式リリースバージョンはさらに古い2.6.11です。SDKの商用バージョンも事実上放棄されていると言われています。
ldaptive.org:いくつかの大学のプロジェクト。以前はJNDIラッパーでしたが、現在は独自のLDAPSDKプロトコル実装があると主張しています。大学の境界外にはコミュニティやユーザーはいないようです。死んではいないが、現時点では不明であり、ここでどのような品質状態が期待できるか。私に言わせれば、Apache LDAP SDKプロジェクトの支援に時間を費やすと、このプロジェクトの方がはるかにうまくいくでしょう。実際には、別のlook-mom-I-also-made-LDAP-Client-SDKは必要ないからです。他のほとんど平凡なJAVALDAPSDKでいっぱいの飽和状態の市場で。
Apache LDAP SDK:他のApacheプロジェクトと比較して、LDAPSDKのペースは非常に遅いです。どういうわけか、Apache LDAPは実際の会社が物事を支援しているのを見逃しているようです。それは、物事を前進させる才能のある趣味の愛好家だけです。SDK V1.0を使用して新しいプロジェクトを開始することはおそらく望ましくありません。これは、V2.0がインターフェイスコードを破壊すると述べているためです。ただし、SDK V2.0はまだベータ版であり、ベータ版がどれだけ長く続くかは誰にもわからないため、おそらくまだSDK V2.0を使用したくないでしょう(V1は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の4つの選択肢があり、それぞれに長所と短所があります。そして、JNDIを使い始めるとすぐに、おそらくJNDIを大いに嫌うでしょう。古いSDKの移行プロジェクトに突入せず、ラッパーコードを実装するための余分な労力に投資して、後で必要なときにSDKを簡単に切り替えることができるようにすることをお勧めします。
オープンソースでアクティブなコミュニティがあるApacheDirectoryClient APIを確認してください(完全な開示:私はApache Directoryプロジェクトに取り組んでいます)。最も重要なのは、Apache Directory Clientが、パスワードポリシーやsyncreplを含むすべての基本的なLDAPコントロールを、これらをサポートする一部の商用バージョンとは異なり、デフォルトでサポートしていることです。有料版のみ。
必要に応じて、新しい/カスタムコントロールと拡張操作を簡単に追加できます。また、注釈駆動型テストフレームワークを使用して、メモリ内のDirectoryServerを簡単に起動できます。
この例を見て、単体テストにAPIとテストフレームワークを活用する方法を確認してください。
そして、おお、ユニットテストでKerberos v5サーバーが必要になった場合、それは単なる注釈です。
UnboundIDLDAPSDKを使用します。それはとても良いです、そして多くの例と良いサポートがあります。
JLDAPとMozillaDirectoryAPIのサポートとメンテナンスが不十分なため、これらの使用をやめました。
https://wiki.mozilla.org/LDAP_Java_SDKのように存在しません。JLDP sdkは、YEARSでは更新されていません。(私が覚えているように2009年)。
Impervahttps://github.com/imperva/domain-directory-controllerからのオープンソースライブラリもあります
そこにクエリのかなり良い例を見つけることができます。
私は本番環境でhttps://www.ldaptive.org/を使用していますが、これまでのところ、「ORM」のようになっていることを嬉しく思います。