我正在尝试为 MS AD 生成一个 LDAP 过滤器,该过滤器根据某些 OU 过滤用户(在我的情况下,排除特定 OU 但包括也不起作用):
(&(cn=Testuser1)(|(ou:dn:=Included1)(ou:dn:=Included2)))
(&(cn=Testuser1)(!(ou:dn:=Excluded)))
不起作用。我测试了(ou:dn:=Included1)
它,它列出了实际的“文件夹”对象(下面标有 *),但没有列出下面的用户(DN 包含 ou)。我无法使用搜索库,因为它应该找到多个:
ou=Included1,dc=example,dc=com *
cn=Testuser1,ou=Included1,dc=example,dc=com +
ou=Included2,dc=example,dc=com
cn=Testuser1,ou=Included2,dc=example,dc=com +
ou=Excluded,dc=example,dc=com
cn=Testuser1,ou=Excluded,dc=example,dc=com -
在上面的两个示例过滤器中,我想要查找两个 Testuser1 条目(标有 +),而不是三个(标有 -)。
但实际上没有匹配任何内容。实际用户条目在我可以过滤的属性上没有其他差异。
感觉就像“ ou:dn:=
”语法只能找到第一个名称组件为所需的对象,而不是任何......?
答案1
负 OU= 组件过滤器似乎不适用于 Microsoft LDAP,因为它是一个构造属性(感谢@semicolon 提供的链接)。
但是,使用完整的属性值却是可行的,例如:
(&(CN=%u)(!(distinguishedName=CN=%u,OU=Excluded,dc=example,dc=com)))