作成 2003/5/3
少しだけLDAPを使う機会があったんだけど、 何も書かないとまた全て忘れちゃうのでちょっとだけ書いてみた。実験環境
LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスに アクセスするためのプロトコルです。
ディレクトリサービスとは、階層型のデータベースのようなものですが、 属性やクラス情報が記述できます。 書き込み、更新のための複雑なトランザクション機能は、通常実装されず、 参照、検索に最適化されています。
組織のユーザー管理などに利用されているようです。
参考
http://www.linux.or.jp/JF/JFdocs/LDAP-HOWTO-1.html
http://kwatch.tripod.co.jp/tech/ldap.html
LDAPをちょっと触ってみるときに、何がめんどくさいって、サーバーの設定でしょう。Tomcatみたいに展開して起動して、ブラウザからアクセス、じゃないですもんね。 LINUX系はよくわからないし(勉強中)、Windowsでサーバー立てるちゅうても、 NetscapeやiPlanetを、LDAPにちょっと触るだけのために、 苦労してインストールして設定するのも骨が折れそうです。
というのが(Linuxでやるより)簡単らしいですが、これでさえ、気が引けます。
最近Jakartaのニュースを見ていたら、 JavaのLDAPサーバLDAPdなるものが、αリリースされたそうなんで、 ちょっと触ってみることにしました。
Webサイトはこちら
http://ldapd.sourceforge.net/
LDAPdは以下を目標に開発されてます。
ちょっと触る分の設定は期待通り簡単でした(ホッ)。
ダウンロード元は上のURLです。
ドキュメント(User Guide)も上のURLです(5/3現在インストールまでしか書いてないけど)。
上記URLからアーカイブをダウンロードし、インストーラを起動します。 ダウンロードするアーカイブ自体がinstaller.jarという実行可能JARファイルなので、 ダブルクリックするだけでインストーラ起動可です。 全部デフォルトで進みました(管理者パスワードだけ変えたけど、使わなかった)。
ここから先はドキュメントになかったので、勘でやりました。
インストール先は、デフォルトでProgram Files\ldapd-0.7aです。 サーバの起動は、bin/run.batです。 起動すると、ほとんど何もメッセージが表示されなくて、ちょっと不安ですが、 netstatすると1396番で何か動いてるようなので、いいことにしましょう。
GUIクライアントの起動は、client/client.batです。 起動すると、見覚えのある画面が。LDAP Browzerですね。 インストール時に作成されたサンプルのツリーが作成されており、 選択できるようになっているので、それ(ldapd)を選択し、「connect」します。 メニューのEdit->Add Entityからエンティティを追加できるので、いくつか作っておきます。
画面、LdapBrouzerでorganiztion(組織)とperson2人を追加してみた。
さて、本題(?)のJavaプログラムからの接続を行ってみました。
別途なんとかプロバイダとかのJARが必要かと思いきや、JDK1.4だけでいいみたいです(SunのJNDIサービスプロバイダが標準でついているんでしょう。たぶん)。 実行すると、先ほど作ったエンティティが取得できました。
画面、実行結果
JavaのLDAPプログラムについては、こちらを参考にされるといいでしょう。
http://www.atmarkit.co.jp/fnetwork/rensai/ldap06/ldap1.html
フィルターの検索式の書き方はこちらのRFC2254あたりが参考になると思います。 http://www.ipa.go.jp/security/rfc/RFC.htm