如何使用 php_ldap 模块检查用户是否属于某个组?
我对 ldap 完全陌生,因此有点困惑......
到目前为止,通过谷歌搜索,我想出了这个:
$ds=ldap_connect($ldapHost, $ldapPort);
if ($ds) {
$r=ldap_bind($ds, $ldapRdn, $ldapPassword);
$filter = "(sAMAccountName=" . $uid . ")";
$attr = array("memberof");
$result = ldap_search($ds, $ldapDN, $filter, $attr) or exit("Unable to search LDAP server");
我不确定这是否正确,因为它是从特定于 AD 的 soemthign 中提取的。问题似乎是 $ldapDN。这就是我要搜索的内容吗?我的团体“定义”是:
cn=User,ou=Profiles,ou=App_DEV,ou=ApplicationRights,O=MyCompany.COM
我该怎么做这个检查?
编辑:
这是我在“接受的答案”和“试错”的帮助下找到的解决方案。我认为答案很大程度上取决于您的特定系统。
//This is the User group DN
$ldapDN = "cn=User,ou=Profiles,ou=App_DEV,ou=ApplicationRights,O=MyCompany.COM";
$filter = "(uniqueMember=uid=" . $uid . ",ou=Users,O=MYCOMPANY.COM)";
$attr = array('uniqueMember');
$result = ldap_search($ldapConnection, $ldapDN, $filter, $attr):
$entries = ldap_get_entries($ldapConnection, $result);
ldap_unbind($ldapConnection);
return intval($entries["count"]) > 0;