使用LDAP查询系统中的所有用户

我正在使用ruby的net / ldap库来解决这个问题,但实际上驱动程序语言并不重要。 我需要找到一种方法,以便能够从系统中获取所有用户,并找出哪些用户没有分配给该帐户的电子邮件。 可能吗?

我可以通过LDAP连接甚至创建新记录,并可以通过使用通配符条目来过滤结果来返回查询。

鉴于我创建了一个filter来查找以三个9开头的cn:

filter = Net::LDAP::Filter.eq("cn", "999*") @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", :filter => filter) 

那么我的结果数可能是42。

如果我创建相同的filter但只请求1 9,则查询失败并返回false

  filter = Net::LDAP::Filter.eq("cn", "9*") @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", :filter => filter) 

如果我只要求"cn", "*" ,我就应该说“给我所有的cn’s”。

因此,问题的简短回答是,这完全取决于您的架构的设置方式。 如果要设置LDAP模式,则需要具有多个具有各种cn(公用名)标识符的记录组,例如cn=activeUserscn=inactiveUsers ,这将允许您比我的情况更深入地查询列表。

我认为您在LDAP服务器上的搜索操作上设置了时间限制问题。

如果您的搜索需要花费很长时间,那么LDAP服务器将返回错误“超出时间限制”且没有数据。

在这种情况下,Ruby-Ldap会引发exceptionLDAP :: ResultError。 我不知道Net-Ldap的表现如何。

尝试提高LDAP服务器的时间限制或使用更严格的搜索filter,例如’(&(cn = 9 *)(active = TRUE))’。 使用您的活跃用户条件替换此处’active = TRUE’。