我正在嘗試為 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)))