dna*_*irl 7 php ldap ldap-query
我使用以下代码成功查询用户的Active Directory:
$filter = (&(objectCategory=person)(samaccountname=someusername));
$fields = array("samaccountname","mail","manager","department","displayname","objectGUID");
$user = ldap_search($ldapconnection, $baseDn, $filter, $fields);
Run Code Online (Sandbox Code Playgroud)
结果数组为manager属性提供此值:
CN=McBossy\, Boss,OU=Users,OU=CentralOffice,DC=ds,DC=example,DC=com
Run Code Online (Sandbox Code Playgroud)
这看起来像是一个尊贵的名字给我.但是当我试图查询经理的记录时,
$filter = (&(objectCategory=person)(dn='CN=McBossy\, Boss,OU=Users,OU=CentralOffice,DC=ds,DC=example,DC=com'));
$manager = ldap_search($ldapconnection, $baseDn, $filter, $fields);
Run Code Online (Sandbox Code Playgroud)
查询失败 PHP Warning: ldap_search(): Search: Bad search filter
我尝试了很多种可能性,包括不同的引用,更多的括号,使用distinguishedName而不是dn等等.
我做错了什么,以及获得经理记录的正确方法是什么?
Ter*_*ner 10
dn不是属性.在过滤器中只能使用属性类型,OID和名称.
获取manager属性后,要获取作为管理器的DN的属性,请使用该manager属性的值作为搜索请求中的基础对象.将搜索范围设置为BASE,过滤器为或者(&),(objectClass=*)并请求所需的属性.然后将搜索请求发送到服务器并解释响应.