2017-01-04 1 views
0

PHP에서 LDAP 그룹의 구성원 만 얻는 것이 가능합니까?PHP LDAP 그룹 구성원 가져 오기

Google을 조금 검색했지만 복잡한 해결책을 찾지 못했습니다. 나는 그저 그 이름과 아무것도 필요로하지 않는다.

$dn = "o=my_company, c=CH"; 
$filter="(|(sn=$person*)(vorname=$person*))"; 
$justthese = array("ou", "sn", "vorname", "mail"); 

사용자는 나는 이런 식으로 뭔가를 발견했습니다하지만 어디에서나 얻을 수있는 UID

와 그룹에 나열되어 있습니다. 당신이 나를 도울 수 있고 더 많은 정보가 필요하다면 알려주세요.

+0

이것은 LDAP 스키마에 따라 크게 다를 수 있습니다. 그룹에 구성원이 포함되어 있습니까, 아니면 각 구성원마다 'memberOf' 속성이 있습니까? – yakatz

+0

그룹에 회원이 있고 사용자가 'memberOf' 속성을 가지고 있지 않습니다. – Damon

+0

'uid','dn','mail' 또는 그 밖의 항목으로 회원이 나열되어 있습니까? 또한, 이것은 어딘가에 있거나 관습적인 표준 스키마입니까? – yakatz

답변

1

의견에있는 추가 정보에 따라 단일 LDAP 쿼리에서이를 수행 할 수 없습니다.

이것은 가능한 해결책의 개요입니다. 필자가 작성한 LDAP 메일 목록 관리자와 비슷한 것을 사용했습니다. (이것은 PHP 7 구문입니다.)

// Setup and run LDAP Search 
$dn = "cn=groups,o=my_company,c=CH"; // Location of groups in directory 
$attributes = ['members']; 
$filter = sprintf("(groupName=%s)", $group_name); 

$search = ldap_search($conn, $dn, $filter, $attributes); 
$results = ldap_get_entries($conn, $search); 

// Function to call on each member 
$member_func = function($uid) 
{ 
    // This is a helper that will get the user data and return an appropriate object (or string). 
    // Implementation is left as an exercise to the user 
    return get_user_details($uid); 
}; 

// Need to filter LDAP results for actual values only 
$member_data = array_map($member_func, array_filter($results['members'], function($k) { return is_numeric($k); }, ARRAY_FILTER_USE_KEY)); 
+0

'$ attributes = .... '와 함께 줄에 구문 오류가 있습니다. – Damon

+0

대괄호'[]'를 의미합니까? 이 문법은 PHP 5.4에서 소개되었습니다. 어쨌든, 이것은 일반 개요처럼 복사 및 붙여 넣기를위한 것이 아닙니다. – yakatz

관련 문제