2013-06-25 4 views
0

LDAP 권한을 부여한 다음 그룹 구성원의 보조 검사를 수행하려고합니다. 시스템 우분투 컴퓨터를 실행하는 PHP 5.3.10 Server2008 R2 Active Directory에 대해 인증. ldap_search()가 작동하지 않는 것 같습니다. jExplore에서 DN을 가져 왔으므로 DN이 정확한지 확실히 알 수 있습니다. ldap_bind는 다른 기능에서 자격 증명으로 작동하므로 서버와 사용자 이름/암호가 유효해야합니다. 오류 :PHP Active Directory 조회

PHP Warning: ldap_search(): Search: Operations error in /var/www/zzz.php on line 28 

코드 :

$ldap = ldap_connect('ldap://xxx.xxx'); 

$admins = $auth['admin']; 
// User not logged in, user level '0' 
if (!isset($user)) 
{ 
    return 0; 
} 

    // DN 
    $group_dn = 'CN=IT Employees,OU=groups,OU=users,OU=xxx,DC=xxx,DC=xxx'; 
    // Filter 
    $filter = '(sAMAccountName=' . $user . ')'; 
    // Attributes 
    $attr = array("memberof","givenname"); 
echo $group_dn.' '.$filter.' '.$attr.'<br />'; 

    // Check if the user is a member of the Admin Group 
    $SubGroups = ldap_search($ldap, $group_dn, $filter, $attr); //Search the admin group for user. 

    $debug = ldap_get_entries($ldap, $SubGroups); 
    echo $debug['count']; 

    if ($debug['count']>>0) 
    { 
     // Yep, you are set admin. (User level 2) 
     echo "Admin Set<br />"; 
     return 2; 
    } 
    else 
    { 
     // Failure. Thou art a normal user. (User level 1) 
     echo "Admin Denied<br />"; 
     return 1; 
    } 
} 
+0

로 변경 필요하지? – ficuscr

+2

이 질문에 대한 답은 당신을 도울 것입니다 : http://stackoverflow.com/questions/6222641/how-to-php-ldap-search-to-get-user-ou-if-i-dont-know-the -ou-for-base-dn –

+0

제안에 감사드립니다. Matthew하지만 해결하지 못했습니다. : –

답변

1
$ldap = ldap_connect('ldap://xxx.xxx'); 

은 어쩌면 $의 LDAP을 확인

$ldap = ldap_connect('ldap://xxx.xxx'); 
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_start_tls($ldap); 
$bind= ldap_bind($ldap, 'user','pass'); 
0

나는이 필터가 작동해야한다고 생각 :

(&(objectClass=user)(sAMAccountName=yourUserName) 
    (memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com)) 

가 잘 나는이가 당신을 위해 작동하도록 조정 할 수 있습니다 확신합니다. 유효한 자원 - 짐