>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 LDAP 프로토콜 기반 디렉터리 서비스 통신을 구현하는 방법

PHP를 사용하여 LDAP 프로토콜 기반 디렉터리 서비스 통신을 구현하는 방법

王林
王林원래의
2023-07-29 11:02:11960검색

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

설치 후 확장명을 적용하려면 웹 서버를 다시 시작하세요.

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. 디렉터리 서비스 검색

Connect 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]를 실제 검색 결과 항목 인덱스로 변경해야 하며, ' displayName'을 가져와야 하는 필드 이름에 추가합니다.

6. LDAP 연결 종료

모든 작업이 완료되면 LDAP 서버 연결을 종료해야 합니다. ldap_close() 함수를 사용하여 연결을 닫습니다. 샘플 코드는 다음과 같습니다.

ldap_close($ldapConn);

Summary

이 기사에서는 PHP를 사용하여 LDAP 프로토콜 기반 디렉터리 서비스 통신을 구현하는 방법을 소개합니다. ldap_connect() 함수를 통해 대상 LDAP 서버에 접속하고, ldap_bind() 함수로 바인딩하고, ldap_search() 함수로 디렉터리 서비스를 검색하고, ldap_get_entries() 함수로 검색 결과를 얻고, ldap_get_values() 함수. 마지막으로 ldap_close() 함수를 사용하여 연결을 닫습니다. 이 기사의 샘플 코드가 독자가 PHP를 사용하여 LDAP 디렉토리 서비스를 작동하는 방법을 이해하는 데 도움이 되기를 바랍니다.

위 내용은 PHP를 사용하여 LDAP 프로토콜 기반 디렉터리 서비스 통신을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.