LDAP とは Lightweight Directory Access Protocol を意味し、 "ディレクトリサーバ" にアクセスするために使用されるプロトコルです。 ディレクトリとは、 ツリー構造に情報を保持している特殊なデータベースのことです。
この概念は、ハードディスクのディレクトリ構造に似ています。 ただし、その内容は異なっており、ルートディレクトリは "世界" であり、 最初のレベルのサブディレクトリは "国" となります。ディレクトリ構造の 下位には会社や機関、場所のエントリがあります。さらに下位には、 人やおそらく道具や文書に関するディレクトリエントリもあります。
ハードディスク内のサブディレクトリにあるファイルを参照するには、 次のようにすることでしょう。
/usr/local/myapp/docs
スラッシュが参照の各部分を区分し、左から右に解釈されます。
LDAP においてこの完全に正しいファイル参照に等価なものは "区分された名前(distinguished name)" であり、単に "dn" と表されます。 例として dn が次のようになっているとしましょう。
cn=John Smith,ou=Accounts,o=My Company,c=US
カンマは各部分を区分し、右から左に解釈されます。この dn は 次のように解釈されます。
country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
ハードディスクのディレクトリ構造を管理する手法について明確な規約が ないのと同様に、ディレクトリサーバーマネージャーは、目的に適した あらゆる構造を設定することが可能です。しかし、実用的にはいくつかの 慣習があります。 利用可能なものに関する情報を持たずにデータベースを使用することが できないのと同様、ディレクトリの構造に関する情報なくして ディレクトリサーバーにアクセスするコードを書くことはできない ということが言えます。
LDAP に関する多くの情報が以下の場所にあります。
Netscape SDK では、有用な プログラマーズガイド が HTML 形式で公開されています。
LDAP サポートを有効にして PHP をコンパイルするには、 OpenLDAP あるいは Bind9.net から LDAP クライアント ライブラリを入手し、コンパイルしておく必要があります。
PHP の LDAP サポートはデフォルトで有効になっていません。
LDAP サポートを有効にして PHP をコンパイルするには、設定オプション
--with-ldap[=DIR]
を指定して PHP をコンパイルする必要があります。
DIR は LDAP をインストールしたディレクトリです。
SASL サポートを有効にするためには、システム上に
sasl.h を用意し、
--with-ldap-sasl[=DIR]
を指定する必要があります。
Win32 ユーザへの注意: この拡張モジュールを動作させるには、 Windows システムの PATH が通った場所に DLL ファイルが存在する必要があります。 FAQ の "Windows で PHP のディレクトリを PATH に追加するにはどうすればいいのですか?" で、その方法を説明しています。 DLL ファイルを PHP のフォルダから Windows のシステムディレクトリにコピーしても動作します (システムディレクトリは、デフォルトで PATH に含まれるからです) が、これは推奨しません。 この拡張モジュールを使用するには、以下のファイルが PATH の通った場所にある必要があります。 libeay32.dll および ssleay32.dll
Win32 ユーザへの注意: PHP 4.3.0 より前のバージョンでは、さらに libsasl.dll も必要です。
Oracle LDAP ライブラリを使用するには、Oracle 環境 が適切に設定されている 必要があります。
ほとんどの LDAP 関数は、リソースを操作するか、あるいはリソースを返します (たとえば ldap_connect() は正の LDAP リンク ID を返し、ほとんどの LDAP 関数はそれを使用します)。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
あるディレクトリサーバーから姓が "S" から始まる全てのエントリに 関する情報を検索し、名前と電子メールアドレスで検索結果を表示します。
LDAP コールを使用する前に、以下のことを知っておいてください。
使用するディレクトリサーバの名前またはアドレス
サーバの "base dn" (このサーバーがあるワールドディレクトリ の部分で、"o=My Company,c=US" のようにすることができます)
サーバーへのアクセスにパスワードを必要とするかどうか (多くのサーバーは "匿名バインド" に関して読みこみを 許可するが、他の処理についてはパスワードを要求します)。
アプリケーションとして作成する LDAP コールのシーケンスは、 通常、次のようなパターンに沿っています。
ldap_connect() // サーバへの接続を確立
|
ldap_bind() // 匿名または認証された "ログイン"
|
ディレクトリの検索または更新等を行い、結果を表示する
|
ldap_close() // "ログアウト"