脚本宝典收集整理的这篇文章主要介绍了PHP 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,O=MyCompany.COM"; $filter = "(uniqueMember=uid=" . $uid . ",ou=Users,O=MYCOMPANY.COM)"; $attr = array('uniqueMember'); $result = ldap_search($ldapConnection,$attr): $entries = ldap_get_entries($ldapConnection,$result); ldap_unbind($ldapConnection); return intval($entries["count"]) > 0;
找出目录中使用的方法的方法是使用Apache Directory Studio之类的东西来分析组.
除了’member’属性之外,AD还在用户记录中存储了memberOf属性,该属性包含该组的DN.但是大多数目录都没有这样做,这可能是你的代码无法工作的原因.
您正在寻找的是这样的过滤器:
// & means "And" the next sibling items: // so "find items that have the objectClass of group and a member whose DN is user_dn (&(objectClass=group)(member=[user_dn]))
要么
(&(objectClass=group)(memberUid=[user_uid]))
所以在你的情况下
$result = ldap_search( $ds,'dc=mycompany,dc=com',// The base From which to start your search. (Could be an OU too,like 'ou=restricted,dc=mycompany,dc=com') '(&(objectClass=group)(member=uid=tom,ou=users,dc=com))' );
或者,如果您的组通过memberUid,您可以将过滤器更改为
$filter = '(&(objectClass=group)(member=username))';
以上是脚本宝典为你收集整理的PHP LDAP:如何搜索用户是否在组中?全部内容,希望文章能够帮你解决PHP LDAP:如何搜索用户是否在组中?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。