[[ノート>ノート/ノート]]~
訪問者数 &counter();      最終更新 &lastmod();

*OpenLDAPの導入 [#ife5daca]

***参考資料 [#a0259179]
-[[実践!OpenLDAP活用術:http://www.thinkit.co.jp/free/tech/18/1/1.html]]
-[[OpenLDAP ソフトウェア 2.3 管理者ガイド:http://www5f.biglobe.ne.jp/~inachi/openldap/admin23/index-ja.html]]
-[[OpenLDAPの使用方法とスキーマ(slapd.conf設定):http://park15.wakwak.com/~unixlife/practical/openldap-1.html]]
-FreeBSDでやってみたケース [[第19回 OpenLDAPの導入:http://www.daily-labo.com/ygg19.html]]

***作業 [#redeca8e]
BerkeleyDBが古いので、入れ替え
-SleepyCatからソースダウンロード、展開、cd build_unix; ./configure --exec-dir=/usr; make; make install
-同時に、古い物が残っていないか、検索して削除。たぶん名前にdbを含むファイルだけでいいだろう。

OpenLDAP最新版を導入
-OpenLDAP-2.3.39(stable) ⇒ configureがどうしてもうまく行かない。エラーになる
-OpenLDAP-2.4.6(new) ⇒ ./configure; make; make test; OK.  make install; これはOK。使えるはず。

slapd.confの設定
-細かくはhttp://www.openldap.org/doc/admin24/quickstart.htmlやhttp://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-ldap-quickstart.html参照。
-suffixやrootdnなどは、dc=yy,dc=is,dc=sci,...のようにすること。
-テスト用にrootpwを設定する必要。slappasswdにてハッシュ文字列を生成し、それを
rootpw {SSHA}vv2y+i6V6es...のように設定する。

テスト
-細かくはhttp://www.openldap.org/doc/admin24/quickstart.html参照。
-slapdを起動 /usr/local/libexec/slapd
-まずはアクセスできるかのテスト
 ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
-データを追加して読み出すテスト~
手元のファイルexample.ldifに
 dn: dc=example,dc=com
 objectclass: dcObject
 objectclass: organization
 o: Example Company
 dc: example
 
 dn: cn=Manager,dc=example,dc=com
 objectclass: organizationalRole
 cn: Manager
のようなものをつくり(dnの部分は上記同様dc=yy,dc=is,dc=sci,...のようにする必要あり)、コマンド
 ldapadd -x -D "cn=Manager,dc=<MY-DOMAIN>,dc=<COM>" -W -f example.ldif
を出してデータを登録。コマンド内の<MY-DOMAIN><COM>は上記同様dc=yy,dc=is,dc=sci,...のようにする必要あり。~
これを読み出すコマンド
 ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)'
にて読み出せるか確認。但しdc=の部分はdc=yy,dc=is,...のようにすること。

*** PHPのldapアクセスインターフェース [#idc310b2]
PHPはldap用のモジュールを入れればldapをアクセスできる。
マニュアルはhttp://www.php.net/manual/ja/ref.ldap.phpに詳しく書いてある。

PHPのldapアクセスインターフェースからのテスト(マニュアルから):
下記のようなPHPプログラムを試す。
 <html>
 <head>
 <title>PHPLDAP test</title>
 </head>
 </body>
 <?php
 // LDAP の基本シーケンスは、接続、バインド、検索、検索結果の解釈、
 // 接続のクローズです。
 
 echo "<h3>LDAP query test</h3>";
 echo "Connecting ...  <br>";
 $ds=ldap_connect("LDAPサーバーのFQN");  // 有効な LDAP サーバーに違いない!
 echo "connect result is " . $ds . "<br />";
 
 if ($ds) {
     echo "Binding ...";
     $r=ldap_bind($ds);     // これは "匿名" バインドで、通常は
                            // 読みこみのみのアクセスとなります。
     echo "Bind result is " . $r . "<br />";
 
     $searchstring="(objectClass=*)";
 
     echo "Searching for  ... " . $searchstring . "<br />";
     // 名前(surname)エントリを検索
     $sr=ldap_search($ds, "cn=Manager,dc=ドメイン列", $searchstring);
     echo "Search result is " . $sr . "<br />";
 
     echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br  />";
  
     echo "Getting entries ...<p>";
     $info = ldap_get_entries($ds, $sr);
     echo "Data for " . $info["count"] . " items returned:<p>";
 
     for ($i=0; $i<$info["count"]; $i++) {
         echo "dn is: " . $info[$i]["dn"] . "<br />";
         echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
         echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
     }
 
     echo "Closing connection";
     ldap_close($ds);
 
 } else {
     echo "<h4>Unable to connect to LDAP server</h4>";
 }
 ?>
 
 </body>
 </html>

***まだできていないこと [#v0d48caa]


まだできていないことは、データベーススキーマの理解とそれにあわせたデータの追加。

SASLへの対応と、TSLへの対応。

***東邦LDAPサーバーへのアクセス ⇒ [[ここから研究室内のみアクセス可>yylab/山内の研究ノート/LDAP認証の実データ]] [#g5785c6d]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS