ディレクトリサービスとは、さまざまな種類の情報を保存および取得するために使用されるシステムを指します。一般的なディレクトリサービスプロトコルには、LDAP(LightWeight Directory Access Protocol)が含まれます。 LDAPプロトコルは通常、ユーザー認証と認証、メールアドレス帳、組織構造、従業員情報などの機能を実装するために使用されます。この記事では、PHP言語を使用してLDAPプロトコルを介してディレクトリサービスと通信する方法を紹介し、対応するコードの例を示します。
PHPを使用してLDAPサーバーと通信するには、LDAP拡張機能をインストールする必要があります。 Linux Systemsでは、パッケージマネージャーから直接インストールできます。
sudo apt-getインストールphp-ldap
Windows Systemsでは、PHP.iniファイルのLDAP拡張機能のロードラインを除外できます(前のセミコロンを削除):
; extension = ldap
拡張機能をインストールした後、Webサーバーを再起動して有効にします。
まず、LDAP_Connect()関数を使用してターゲットLDAPサーバーに接続する必要があります。この関数は、後続の操作のためにLDAP接続オブジェクトを返します。サンプルコードは次のとおりです。
$ ldaphost = 'ldap.example.com'; $ ldapport = 389; $ ldapconn = ldap_connect($ ldaphost、$ ldapport);
実際のアプリケーションでは、実際のLDAPサーバーアドレスとポートに$ LDAPHOSTと$ LDAPPORTを変更する必要があります。
接続が成功した後、LDAP_BIND()関数を使用してLDAPサーバーにバインドする必要があります。これは、クライアントが認証に合格し、後続の操作を実行する許可を持っていることを意味します。選択するいくつかの異なるバインディング方法があります。
匿名のバインディングを使用して、LDAPサーバーに接続できます。
ldap_bind($ ldapconn);
ユーザー名とパスワードを使用してLDAPサーバーに接続します。
$ ldapuser = 'username'; $ ldappass = 'password'; ldap_bind($ ldapconn、$ ldapuser、$ ldappass);
LDAPサーバーに接続してバインディングした後、LDAP_Search()関数を使用して、ディレクトリサービスでエントリを検索できます。検索操作では、検索および検索基準のベースノード(ベースDN)を指定する必要があります。サンプルコードは次のとおりです。
$ searchbasedn = 'ou = people、dc = example、dc = com'; $ searchfilter = '(cn = john doe)'; $ searchResult = ldap_search($ ldapconn、$ searchbasedn、$ searchfilter);
実際のアプリケーションでは、適切な値に$ searchbasednと$ searchFilterを変更する必要があります。
検索結果は、LDAP_GET_ENTRIES()関数を使用して読み取り可能な配列に変換する必要があるLDAP検索結果オブジェクトです。サンプルコードは次のとおりです。
$ searchentries = ldap_get_entries($ ldapconn、$ searchResult);
ディレクトリサービスデータを検索した後、必要に応じて対応するフィールド値を取得できます。一般に、LDAP_GET_VALUES()関数を使用して、特定のフィールドの値を取得できます。例コードは次のとおりです。
$ name = ldap_get_values($ ldapconn、$ searchentries [0]、 'displayname');
$ searchentries [0]を実際の検索結果項目インデックスに変更し、取得する必要があるフィールド名に「表示」を変更する必要があります。
すべての操作が完了した後、LDAPサーバーへの接続を閉じる必要があります。 ldap_close()関数を使用して、接続を閉じます。例コードは次のとおりです。
ldap_close($ ldapconn);
この記事では、PHPを使用してLDAPプロトコルに基づいてディレクトリサービス通信を実装する方法について説明します。 LDAP_Connect()関数を介してターゲットLDAPサーバーを接続し、バインドし、ldap_search()関数でディレクトリサービスを検索し、ldap_get_entries()関数で検索結果を取得し、ldap_get_values()関数を使用してフィールド値を取得します。最後に、ldap_close()関数を使用して接続を閉じます。うまくいけば、この記事のサンプルコードは、読者がPHPを使用してLDAPディレクトリサービスを操作する方法を理解するのに役立ちます。