Active Directory过滤PHP

时间:2016-09-26 08:57:15

标签: php active-directory ldap

我正在尝试使用PHP获取我的活动目录联系人,这是域名:`' OU =商店,OU = US,OU =测试,DC = com,DC = def,DC =内部&#39 ;

但是,我有12个国家/地区需要搜索,因此我们不会搜索美国'我还需要搜索FRA' '英国',...&我只需要“商店”中的联系人。 OU,我尝试过类似的东西,但搜索过滤器错误:OU=Shop,OU=*,OU=test,DC=com,DC=def,DC=intra

那么如何制作一个类似的搜索过滤器,只返回每个国家/地区的商店?

2 个答案:

答案 0 :(得分:1)

简短的回答是,您无法使用DN创建搜索过滤器 - 这只是搜索“root”,即搜索向下开始的位置。

用SQL术语来思考它:搜索不同的DN上下文就像在不同的表中搜索联系人,每个国家一个。在这种情况下,使用SQL您必须指定每个表:select * from US,MX,ES,...

在LDAP中,您必须找到联系人对象共享的属性

的内容
(&(objectclass=contact)(description=shop))

或者在你的情况下,objectclass=contact就足够了。

如果在将联系人唯一标识为群组的属性中没有相似之处,那么您就不走运了。

答案 1 :(得分:1)

就像@mvrejin说的那样,你无法以这种方式创建搜索过滤器,我建议将你正在谈论的那些联系人或商店添加到某个组(例如Shops_)并在搜索过滤器中添加该组,如下所示:

$search_filter = '(&(objectCategory=person)(memberOf=cn=Shops_,ou=something,DC=com,DC=def,DC=intra))';