LDAPとは? わかりやすく解説

LDAP 関数

導入

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 環境でこの拡張モジュールを有効にするには、 PHP/Win32 バイナリパッケージの DLL フォルダから Windows マシンの SYSTEM32 フォルダ(例: C:\WINNT\SYSTEM32 または C:\WINDOWS\SYSTEM32) に DLL ファイルをコピーする必要があります。 PHP <= 4.2.0ならば libsasl.dll、PHP <= 4.3.0 ならば libeay32.dllssleay32.dll を SYSTEM32 フォルダにコピーしてください。
Oracle LDAP ライブラリを使用するには、Oracle 環境 が適切に設定されている 必要があります。

実行時設定

php.ini の設定により動作が変化します。
表 146. LDAP 設定オプション
名前デフォルト変更の可否変更履歴
ldap.max_links"-1"PHP_INI_SYSTEM 

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。

リソース型

リソース型は定義されていません。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
LDAP_DEREF_NEVER (integer)
LDAP_DEREF_SEARCHING (integer)
LDAP_DEREF_FINDING (integer)
LDAP_DEREF_ALWAYS (integer)
LDAP_OPT_DEREF (integer)
LDAP_OPT_SIZELIMIT (integer)
LDAP_OPT_TIMELIMIT (integer)
LDAP_OPT_PROTOCOL_VERSION (integer)
LDAP_OPT_ERROR_NUMBER (integer)
LDAP_OPT_REFERRALS (integer)
LDAP_OPT_RESTART (integer)
LDAP_OPT_HOST_NAME (integer)
LDAP_OPT_ERROR_STRING (integer)
LDAP_OPT_MATCHED_DN (integer)
LDAP_OPT_SERVER_CONTROLS (integer)
LDAP_OPT_CLIENT_CONTROLS (integer)
LDAP_OPT_DEBUG_LEVEL (integer)
GSLC_SSL_NO_AUTH (integer)
GSLC_SSL_ONEWAY_AUTH (integer)
GSLC_SSL_TWOWAY_AUTH (integer)

あるディレクトリサーバーから姓が "S" から始まる全てのエントリに 関する情報を検索し、名前と電子メールアドレスで検索結果を表示します。
例 1014. LDAP 検索の例
<?php
// LDAP の基本シーケンスは、接続、バインド、検索、検索結果の解釈、
// 接続のクローズです。

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("localhost");  // 有効な LDAP サーバーに違いない!
echo "connect result is " . $ds . "<br />";

if ($ds) {
   echo "Binding ...";
   $r=ldap_bind($ds);    // これは "匿名" バインドで、通常は
                           // 読みこみのみのアクセスとなります。
   echo "Bind result is " . $r . "<br />";

   echo "Searching for (sn=S*) ...";
   // 名前(surname)エントリを検索
   $sr=ldap_search($ds, "o=My Company, c=US", "sn=S*"); 
   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>";
}
?>

PHP LDAP コールの使用法

LDAP コールを使用する前に、以下のことを知っておいてください。
  • 使用するディレクトリサーバの名前またはアドレス
  • サーバの "base dn" (このサーバーがあるワールドディレクトリ の部分で、"o=My Company,c=US" のようにすることができます)
  • サーバーへのアクセスにパスワードを必要とするかどうか (多くのサーバーは "匿名バインド" に関して読みこみを 許可するが、他の処理についてはパスワードを要求します)。

アプリケーションとして作成する LDAP コールのシーケンスは、 通常、次のようなパターンに沿っています。
  ldap_connect()    // サーバへの接続を確立
     |
  ldap_bind()       // 匿名または認証された "ログイン"
     |
  ディレクトリの検索または更新等を行い、結果を表示する
     |
  ldap_close()      // "ログアウト"


目次

ldap_8859_to_t61 — 8859 文字を t61 文字に変換する
ldap_add — LDAP ディレクトリにエントリを付加する
ldap_bind — LDAP ディレクトリにバインドする
ldap_closeldap_unbind() のエイリアス
ldap_compare — DN で指定したエントリで見付かった属性の値を比較する
ldap_connect — LDAP サーバへ接続する
ldap_count_entries — サーチ時のエントリ数をカウントする
ldap_delete — ディレクトリからエントリを削除する
ldap_dn2ufn — DN をユーザに分かりやすい名前のフォーマットに変換する
ldap_err2str — LDAP のエラー番号をエラーメッセージ文字列に変換する
ldap_errno — 直近の LDAP コマンドの LDAP エラー番号を返す
ldap_error — 直近の LDAP コマンドの LDAP エラーメッセージを返す
ldap_explode_dn — DN を構成要素毎に分割する
ldap_first_attribute — 最初の属性を返す
ldap_first_entry — 最初の結果 ID を返す
ldap_first_reference — 最初のリファレンスを返す
ldap_free_result — 結果メモリを開放する
ldap_get_attributes — サーチ結果エントリから属性を得る
ldap_get_dn — 結果エントリから DN を得る
ldap_get_entries — 全ての結果エントリを得る
ldap_get_option — 指定したオプションの現在の値を得る
ldap_get_values_len — 結果エントリから全てのバイナリ値を得る
ldap_get_values — 結果エントリから全ての値を得る
ldap_list — シングルレベル探索を行う
ldap_mod_add — 現在の属性に属性を追加する
ldap_mod_del — 現在の属性から属性を削除する
ldap_mod_replace — 属性を新規の値に置換する
ldap_modify — LDAP エントリを修正する
ldap_next_attribute — 結果における次の属性を得る
ldap_next_entry — 次の結果エントリを得る
ldap_next_reference — 次のリファレンスを得る
ldap_parse_reference — 参照エントリから情報を展開する
ldap_parse_result — 結果から情報を展開する
ldap_read — エントリを読み込む
ldap_rename — エントリ名を修正する
ldap_sasl_bind — SASL を使用して LDAP ディレクトリにバインドする
ldap_search — LDAP ツリーを探索する
ldap_set_option — 指定したオプションの値を設定する
ldap_set_rebind_proc — 参照先を再バインドするためのコールバック関数を設定する
ldap_sort — LDAP 結果エントリをソートする
ldap_start_tls — TLS を開始する
ldap_t61_to_8859 — t61 文字を 8859 文字に変換する
ldap_unbind — LDAP ディレクトリへのバインドを解除する

Lightweight Directory Access Protocol

(LDAP から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/06 09:27 UTC 版)

Lightweight Directory Access Protocol(ライトウェイト ディレクトリ アクセス プロトコル、LDAP:エルダップ)は、ディレクトリ・サービスに接続するために使用される通信プロトコルの一つ。




「Lightweight Directory Access Protocol」の続きの解説一覧


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「LDAP」の関連用語

LDAPのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



LDAPのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
アライドテレシス株式会社アライドテレシス株式会社
Copyright(c)2024 Allied Telesis K.K. All Rights Reserved.
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリLDAPの記事を利用しております。
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのLightweight Directory Access Protocol (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS