2012-11-05 3 views
2

사용자를 인증하기 위해 PHP에서 LDAP 쿼리 클래스를 작성했습니다. 나는 여러 OU에 LDAP 서버를 쿼리해야 , 이것은 예입니다 :이 도메인에서여러 OU에 대한 Ldap 쿼리

DC=mydomain,DC=com 
    OU=MyBusiness 
     CN=MyGroup 

DC=mydomain,DC=com 
    OU=Users 
     CN=Domain Users 

, 나는 그룹과 두 개의 OU, 하나 내 사용자 지정 OU있다. 다른 하나는 표준 Windows OU입니다. 두 그룹을 가져 오려면 쿼리를 만들고 싶습니다. 하나는 OU = Users 안에 있고 다른 하나는 OU = MyBusiness ... 안에 있습니다.하지만 어려운 것 같습니다. 나는이 연결 시도 :

$r=ldap_connect($ldap_host,$ldap_port); 
ldap_bind($r,$user,$passw); 
$domain="OU=MyBusiness,DC=mydomain,DC=com"; 
$sr=ldap_search($r, $domain ,"(&(objectClass=user)(sAMAccountName=".$user."))"); 

을하지만 마이 비즈니스의 그룹을 얻을, 나는 이러한 시도 :

$domain="OU=Users,DC=mydomain,DC=com"; //gets only the other group 
$domain="DC=mydomain,DC=com"; //error 
$domain="OU=*,DC=mydomain,DC=com"; //error 

을하지만 아무도 작동하지 않습니다. 어떻게해야합니까?

+0

(그 ldap_options가 최상위에 필요한 검색 "DC가 사용자 도메인을, DC = COM ="), DC = com' – Squazic

+0

네 말이 맞아. 하지만 때로는 "ldapuser"를 사용하여 사용자 세부 정보를 얻는 것보다 디렉토리에 검색을 제공해야합니다. $ domain = "OU = *, DC = mydomain, DC = com"에서 검색해야합니까? – Tobia

답변

0

여기까지 -이 작업을 수행해야합니다. 는 그냥 사용자를 검색하려면 'DC가 사용자 도메인을 =, 당신은 단지 기본 DN을 사용할 수 있습니다

$r=ldap_connect($ldap_host,$ldap_port); 
ldap_set_option($r, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($r, LDAP_OPT_REFERRALS, 0); 
ldap_bind($r,$user,$passw); 
$search = "(&(objectClass=user)(sAMAccountName=$user))"; 
$attributes = array("cn","displayName","dn"); 
$sr=ldap_search($r,$domain,$search,$attributes); 
$results = ldap_get_entries($r,$sr); 
foreach ($results as $result) { 
    echo $result['cn']; 
}