假设您有一个具有以下结构的LDAP:
dc=corp,dc=com
|--dc=security
|--ou=users
|--ou=corporate
| |--ou=it
| |--it-user1
| |--it-user2
|--user1
|--user2
|--user3
我需要一个搜索查询来查看用户下的所有条目,包括公司及其下的条目。
目前我正在尝试以下方法:
uid=it-user2,ou=users,dc=security,dc=corp,dc=com
搜索范围设置为子树。我的印象是子树范围会导致LDAP以递归方式搜索整个树,但情况似乎并非如此。但是,如果我在搜索中添加完整路径,则会找到该条目。
uid=it-user2,ou=it,ou=corporate,ou=users,dc=security,dc=corp,dc=com
有人能告诉我出错的地方吗?感谢。
答案 0 :(得分:1)
您需要将搜索上下文(即搜索库)设置为存储对象/条目的位置。根据您的示例,搜索上下文为ou=users,dc=security,dc=corp,dc=com
。当您将搜索范围设置为子树时,它应该找到与您的critera匹配的条目(即搜索过滤器)。例如,
ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=it-user2)"
当然,使用“子树”搜索范围,您甚至可以将搜索上下文设置为更高级别的容器(例如dc=security,dc=corp,dc=com
)。只要符合过滤器指定的条件,您的条目仍会被找到。由于您正在搜索ou=users
容器下的所有条目,因此您的查询可能如下所示:
ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=*)"
或
ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(objectclass=*)"
答案 1 :(得分:1)
我打了好几个小时 - CN =用户LDAP Directory Entry in .Net - not working with OU=Users
这看似愚蠢和愚蠢,但Active Directory中的默认树设置是而不是OU =用户,dc =域,dc = com,而是 CN =用户 ,dc = domain,dc = com(注意CN =不是OU =用户。)
答案 2 :(得分:0)
uid=it-user2,ou=users,dc=security,dc=corp,dc=com
不存在。 LDAP客户端必须为存在的搜索请求提供基础对象。