gpt4 book ai didi

php - LDAP/AD 过滤器 - "objectclass not equal to"不工作

转载 作者:可可西里 更新时间:2023-10-31 23:02:51 26 4
gpt4 key购买 nike

我正在使用 LDAP Active Directory 并尝试列出所有用户。我有这个过滤器,效果很好:

(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))

不幸的是,我们在 AD 中还有一个计算机单元和其他设备,对象类为“用户”,因此通过之前的过滤器,我得到了所有用户、计算机、设备、房间等。

这些计算机和设备也有一个对象类“计算机”,所以我需要用对象类扩展过滤器!=“计算机”以便只列出真实用户。到目前为止,我已经尝试了这些过滤器,但没有一个起作用(没有返回数据!):

(&(objectclass=user)(!objectclass=computer)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(&(objectclass=user)(!(objectclass=computer))(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!(objectclass=computer))(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!objectclass=computer)(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))

(真实用户没有对象类“计算机”)。

我正在使用 PHP ldap 实现,因此使用 ldap_search() 方法。

发现了“不等于”语法,例如这里:http://technet.microsoft.com/en-us/library/aa996205%28EXCHG.65%29.aspx或此处:http://msdn.microsoft.com/en-us/library/aa746475%28v=vs.85%29.aspx

也许我可以尝试在 DN 中的 (!CN=Computers) 位置过滤用户,但首先我想过滤 (!objectclass=computer),因为这对我来说更符合逻辑。

objectclass != "computer" 表达式的正确语法是什么?

最佳答案

first link相反您提供的 (!objectclass=computer) 不是有效的过滤器表达式。它应该是 (!(objectclass=computer))。请参阅 RFC 2254:

filter ::= "(" filtercomp ")"

not ::= "!" filter

所以你的过滤器应该是

(&(!(objectclass=computer))(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))

关于php - LDAP/AD 过滤器 - "objectclass not equal to"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com