2009年12月4日金曜日

OpenLDAP/cygrunsrv/Cygwin

JNDI を使って、Java オブジェクトをLDAP に登録する実験をしたいが、その前にまず、LDAPサーバを準備する必要がある。そこで、以前 Cygwin を入れたときに一緒にインストールしたまま未使用だった OpenLDAP を活用してみる事にした。

■ バージョン等
  • OS: Windows XP SP3
  • Cygwin : 1.5.25
  • OpenLDAP: 2.3.43-1
■ 前提
OpenLDAP 込みで、Cygwin が入っている前提。
  • Cygwin がなかったら、ここから SetUp.exe を実行。
  • OpenLDAP がなかったら、SetUp.exe の「Select Package」で Net カテゴリの下にある openldap を選択して追加。

■ Windows サービスに登録
必須ではないがサービスとして登録した。
cygrunsrv --install OpenLDAP --path /usr/sbin/slapd --args "-d 0 -f /etc/openldap/slapd.conf" --desc OpenLDAP/Cygwin

登録内容の確認は
  • Cygwin コマンドプロンプトからcygrunsrv -L -V、または
  • 「コンパネ」/「管理ツール」/「サービス」(以下、単に「サービス」)での OpenLDAP の表示。

動いていることの確認は
  • 「サービス」で状態が”開始”になっている事
  • netstat -ano|grep 389 でポート 389のプロセス番号を調べて、タスク・マネージャでそのプロセス番号が slapd.exe のものである事を確認
※ 起動が遅くなるのがイヤなので、いったん登録した後「スタートアップの種類」を手動に設定。

■ 設定
こんなslapd.confにした
include  /etc/openldap/schema/core.schema
include /etc/openldap/schema/java.schema
pidfile /var/openldap/run/slapd.pid
argsfile /var/openldap/run/slapd.args
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw secret
directory /var/openldap/openldap-data
index objectClass eq

2行目の java.schema のinclude を追加し、"dc=my-company"を、example に変更。

■ エントリを追加してみる
上記設定の動作を確認。
LDAP Admin というツールを見つけたので使う事にした。[→URL]
LDAP Admin を起動して、[New Connection] で 以下の接続設定を新規作成。
  • Host:127.0.0.1
  • Port:389
  • Version:3
  • Username:cn=Manager,dc=example,dc=com
  • Password:secret
接続すると dc=example,dc=com が表示されるが、今のところエントリ無し。

以下のように test.ldif を書いて、これを Cygwin から LDAP に読ませる。
dn: o=JNDITest,dc=example,dc=com
o: JNDITest
objectclass: top
objectclass: organization
$ ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f test.ldif

エントリが追加された事をLDAP Admin で確認

これで、JNDI + LDAP を試す準備ができた。

■ 参考URL
http://web.mit.edu/cygwin/cygwin_v1.3.2/usr/doc/Cygwin/cygrunsrv.README
http://rigsb.net/wiki/index.php?title=Run_OpenLDAP_as_a_Windows_service_via_Cygwin
http://linux.die.net/man/8/slapd

0 件のコメント:

コメントを投稿