![]() |
ノート/OpenLDAP導入https://pepper.is.sci.toho-u.ac.jp:443/pepper/index.php?%A5%CE%A1%BC%A5%C8%2FOpenLDAP%C6%B3%C6%FE |
![]() |
ノート
訪問者数 3872 最終更新 2007-12-20 (木) 14:41:23
BerkeleyDBが古いので、入れ替え
OpenLDAP最新版を導入
slapd.confの設定
テスト
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
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用のモジュールを入れれば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>
まだできていないことは、データベーススキーマの理解とそれにあわせたデータの追加。
SASLへの対応と、TSLへの対応。