2016-05-13 3 views
0

Ich habe Gruppen und Benutzer in Windows AD und ich möchte überprüfen, ob Mitglied ein Teil der Gruppe ist. Beispiel:PHP LDAP Mitglied einer Gruppe

user1 is in a group 1 
     group 1 in group 2 

und dann sollte i Benutzer 1 in Gruppe 2 als auch sehen. In diesem Fall hätte ich gerne das Ergebnis 1 oder 0 Verbindung ist in Ordnung, aber Problem in der Suchanweisung.

$username = $_POST["username"]; 

$passw = $_POST["password"]; 


$ldap_dn = " OU=MANAGER GROUP,OU=ALL GROUPS,DC=domain,DC=uk"; 
$ldap_svr = "domain.uk"; 
$ldap_domain = "@domain.uk"; 
$conn=ldap_connect($ldap_svr) or die("Cannot connect to LDAP server!"); 

ldap_set_option ($conn, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3); 

ldap_bind($conn,$username.$ldap_domain , $passw); 


    $filter="(&(objectClass=user)(memberOf=CN=Group1,OU=MANAGER GROUP,OU=ALL GROUPS,DC=domain,DC=uk))"; 
    $justthese = array("cn", "sn", "givenname", "mail"); 

    $sr=ldap_search($conn, $ldap_dn, $filter, $justthese); 

    $info = ldap_get_entries($conn, $sr); 

    echo $info["count"]." entries returned\n"; 
+0

Werfen Sie einen Blick auf [adLDAP] (https://github.com/Rich2k/adLDAP) Bibliothek. Es hat eine inGroup-Funktion. – ourmandave

Antwort

1

Sie vielleicht einen Blick auf dieser Stack-Überlauf Frage haben wollen, um zu sehen, wie es zu lösen, ohne eine Bibliothek: ldap nested group membership

Im Grunde läuft es auf mit der LDAP_MATCHING_RULE_IN_CHAIN ​​passenden Regel in der Abfrage nach unten.

(memberOf:1.2.840.113556.1.4.1941:=CN=Group1,OU=MANAGER GROUP,OU=ALL GROUPS,DC=domain,DC=uk)