ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用して LDAP プロトコルに基づいたディレクトリ サービス通信を実装する方法

PHP を使用して LDAP プロトコルに基づいたディレクトリ サービス通信を実装する方法

王林
リリース: 2023-07-29 11:06:01
オリジナル
991 人が閲覧しました

PHP を使用して LDAP プロトコルに基づいたディレクトリ サービス通信を実装する方法

ディレクトリ サービスとは、さまざまな種類の情報を保存および取得するために使用されるシステムを指します。一般的なディレクトリ サービス プロトコルには、LDAP (Lightweight Directory Access Protocol) が含まれます。 )。 LDAP プロトコルは通常、ユーザーの認証と認可、電子メール アドレス帳、組織構造、従業員情報などの機能を実装するために使用されます。この記事では、PHP 言語を使用して LDAP プロトコル経由でディレクトリ サービスと通信する方法と、対応するコード例を紹介します。

1. LDAP 拡張機能のインストール

PHP を使用して LDAP サーバーと通信するには、LDAP 拡張機能をインストールする必要があります。 Linux システムでは、パッケージ マネージャーを介して直接インストールできます:

sudo apt-get install php-ldap
ログイン後にコピー

Windows システムでは、php.ini ファイル内の ldap 拡張機能の読み込み行のコメントを解除できます (先頭のセミコロンを削除します):

;extension=ldap
ログイン後にコピー

拡張機能をインストールした後、Web サーバーを再起動して拡張機能を有効にします。

2. LDAP サーバーへの接続

まず、ldap_connect() 関数を使用してターゲット LDAP サーバーに接続する必要があります。この関数は、後続の操作のために LDAP 接続オブジェクトを返します。サンプル コードは次のとおりです。

$ldapHost = 'ldap.example.com';
$ldapPort = 389;
$ldapConn = ldap_connect($ldapHost, $ldapPort);
ログイン後にコピー

実際のアプリケーションでは、$ldapHost と $ldapPort を実際の LDAP サーバーのアドレスとポートに変更する必要があります。

3. LDAP サーバーへのバインド

接続が成功したら、ldap_bind() 関数を使用して LDAP サーバーにバインドする必要があります。これは、クライアントが認証に合格し、後続の操作を実行する権限を持っていることを意味します。いくつかの異なるバインディング方法から選択できます。

  1. 匿名バインディング

匿名バインディングを使用して LDAP サーバーに接続できます:

ldap_bind($ldapConn);
ログイン後にコピー
  1. ユーザー名とパスワードのバインディング

ユーザー名とパスワードを使用して LDAP サーバーに接続します:

$ldapUser = 'username';
$ldapPass = 'password';
ldap_bind($ldapConn, $ldapUser, $ldapPass);
ログイン後にコピー

4. ディレクトリ サービスの検索

LDAP サーバーに接続してバインドした後、ldap_search() を使用できます。ディレクトリサービスエントリを検索する機能。検索操作では、検索の基点ノード(基点DN)と検索条件を指定する必要があります。サンプルコードは以下のとおりです。

$searchBaseDN = 'ou=people,dc=example,dc=com';
$searchFilter = '(cn=John Doe)';
$searchResult = ldap_search($ldapConn, $searchBaseDN, $searchFilter);
ログイン後にコピー

実際のアプリケーションでは、$searchBaseDN と $searchFilter を適切な値に変更する必要があります。

検索結果は LDAP 検索結果オブジェクトであり、ldap_get_entries() 関数を使用して読み取り可能な配列に変換する必要があります。サンプルコードは以下の通りです:

$searchEntries = ldap_get_entries($ldapConn, $searchResult);
ログイン後にコピー

5. ディレクトリサービスデータの取得

ディレクトリサービスデータを検索後、必要に応じて対応するフィールド値を取得できます。通常、ldap_get_values() 関数を使用して、特定のフィールドの値を取得できます。サンプル コードは次のとおりです:

$name = ldap_get_values($ldapConn, $searchEntries[0], 'displayName');
ログイン後にコピー

$searchEntries[0] を実際の検索結果項目のインデックスに変更する必要があります。フィールド名。

6. LDAP 接続を閉じる

すべての操作が完了したら、LDAP サーバーへの接続を閉じる必要があります。 ldap_close() 関数を使用して接続を閉じます。サンプル コードは次のとおりです:

ldap_close($ldapConn);
ログイン後にコピー

概要

この記事では、PHP を使用して LDAP プロトコルに基づくディレクトリ サービス通信を実装する方法を紹介します。 ldap_connect() 関数でターゲット LDAP サーバーに接続し、ldap_bind() 関数でバインドし、ldap_search() 関数でディレクトリ サービスを検索し、ldap_get_entries() 関数で検索結果を取得し、 ldap_get_values() 関数。最後に、ldap_close() 関数を使用して接続を閉じます。この記事のサンプル コードが、読者が PHP を使用して LDAP ディレクトリ サービスを操作する方法を理解するのに役立つことを願っています。

以上がPHP を使用して LDAP プロトコルに基づいたディレクトリ サービス通信を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート