【发布时间】:2014-08-26 12:34:54
【问题描述】:
在 Active Directory 中搜索用户的最佳 LDAP 过滤器是什么? 在我的示例过滤器中,我还排除了禁用的帐户和没有电子邮件地址的帐户。
考虑搜索以下名称:“firname middlename lastname”。 我的代码将这个名称解析如下:
$name = "firstname middlename lastname";
$nameArray = explode(" ", $name);
$fullName = $name;
$firsName = $nameArray[0];
$lastName = $nameArray[count($nameArray)-1];
如果您只搜索“firstname lastname”或“firstname middlename lastname”,此过滤器非常有用,但如果您搜索“firstname middlename”则不起作用:
(&(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*)(givenname=$firstName*)(sn=$lastName*))
此过滤器按预期工作,但速度非常慢:
(&(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*)(|(&(givenname=$firstName*)(sn=$lastName*))(displayName=*$fullName*)))
displayName 保留了全名,但格式为“lastname firstname middlename”。 在一个完美的世界里,人们会有 0 或 1 个中间名,或者只有一个姓氏,但当然他们可以有更多。
关于如何制作一个好的(快速)搜索过滤器有什么建议吗?
【问题讨论】:
标签: php active-directory ldap ldap-query