3

我对 LDAP 和 AD 还很陌生。我想创建一个 LDAP 过滤器来显示 AD 中的所有学生。但问题是学生在不同的BASE DN中:

OU=学生,OU=用户,OU=SOE,OU=FOAE,OU=大学,DC=sepang
OU=学生,OU=用户,OU=SOMLC,OU=FOAE,OU=大学,DC=sepang
OU=学生,OU=用户,OU=SOCS,OU=FOS,OU=大学,DC=sepang

即对于每个学生来说就像

CN =khx72b,OU=STUDENTS,OU=USERS,OU=SOCS,OU=FOS,OU=UNIVERSITY,DC=sepang

如您所见,来自不同学院的学生在不同的地方。给定用户名,我如何搜索并查找给定用户是否在目录中?

objectClass所有学生来说是'user'

4

3 回答 3

1

看起来您正在搜索“用户”类型的对象,这些对象位于称为“学生”的 OU 中,但没有共同的父对象。

这不能一步完成(即使用单个 LDAP 查询)。

您必须检索所有名为“STUDENTS”的 OU,并将它们一一用作基本 DN,就像您已经指出的那样。

或者您找到所有学生共享的属性(例如,直接组成员身份,或某处的特殊值)并将其用作过滤器。这是一种更危险的方法,因为无法保证每个学生实际上都具有您所依赖的功能 - 有些可能没有正确输入 AD。

于 2009-03-12T09:07:15.533 回答
1

Tomalak 是对的,Microsoft 确实提供了许多可用于此目的的属性,例如“employeeType”、“comment”、“department”、“company”、“department”、“divison”等,但这些属性存在问题是它们没有预先填充任何可以帮助您的信息。您可以开始将其中一种用于将来的目的,但是您必须保持这种做法以使其保持一致。我认为对您来说最简单的解决方案可能是将每个用户放入一个名称类似于 OU 名称的组中,如果他们当前位于同一个 OU 中,这应该是一项非常容易的任务。然后一旦完成,您可以轻松创建一个 LDAP 查询,然后查看该组的成员资格,如下所示:

((objectCategory=person)(objectClass=user)(memberOf=CN=STUDENTS GROUP,OU=USERS,OU=SOCS,OU=FOS,OU=UNIVERSITY,DC=sepang))

请注意,在 LDAP 过滤器中使用“memberOf”时,搜索值必须是组的完整字符串,因此您不能使用通配符,例如:memberOf=CN=STUDENTS GROUP*)。

您仍然需要维护您或某人或某物(例如自动调度脚本任务)的做法,该做法维护组成员身份,以确保您的 LDAP 查询准确无误。

我确实看到了这篇文章,其中说您可以通过“匹配可分辨名称的组件”来做任何额外的事情,但我以前从未见过它,我无法让它工作。另请查看有关 ADO 搜索的本教程,以了解有关这些工作的更多信息

于 2009-03-13T15:26:15.993 回答
1

通过将“searchRoot”设置为 OU 的 LDAP 路径来搜索 OU 中的对象。然后,所有搜索都将限制在该 OU 中。

于 2011-06-28T06:14:16.983 回答