LDAP 和 Active Directory 结果缺少某些结果的字段

Posted

技术标签:

【中文标题】LDAP 和 Active Directory 结果缺少某些结果的字段【英文标题】:LDAP & Active Directory results missing fields for some results 【发布时间】:2008-11-13 01:23:56 【问题描述】:

当使用 LDAP 查询我们的 Active Directory 结构以查找用户帐户时,一些记录(但不是全部)缺少某些关键字段,特别是 memberOf 和 userAccountControl(它有一个位标志,指示帐户是否被禁用)。

以下是一些精炼细节:

如果查询设置为过滤任何 那些领域(例如获得一个 中的非禁用帐户列表 市场部组),他们 从结果集中消失(因为 就 AD 而言,他们是 失踪)。

如果执行查询 具有高度特权的域 管理员帐户,查询工作正常 很好。

有问题的记录大约占用户记录总数的 1/4 - 1/3。大多数确实似乎是较新的记录(我们一度认为这可能与在域控制器服务器上升级到 2003 有关),尽管一些较旧的记录似乎也受到了影响。

粗略查看两条相似的记录,一条其整个记录可供任何帐户查看,另一条不显示任何明显差异。

所以我最好的猜测是存在某种权限拒绝集(可能在架构级别?)这使得某些字段受到限制。我应该注意到域管理员从不故意设置任何此类权限。

更新/解决方案: ADSI Edit(Windows 2003 Support Tools)帮助我将其归结为更改了已验证用户角色的默认权限。对于某些人,该角色包含读取帐户限制(其中包含 userAccountControl)和读取组成员资格 (memberOf),而对于其他人则没有。

差异的最初原因仍不清楚,尽管事实上大多数“坏”记录是在域控制器切换到 Windows 2003 之后创建的,这可能是因素。

解决方案:这还有点不确定,但很可能是更新的组策略,结合脚本来更新现有帐户。

【问题讨论】:

【参考方案1】:

您可以通过 adsi edit 查看特定用户的特定字段的权限。必须以某种方式更改它们,您必须将它们恢复为默认值。也许他们在某些用户的 ou 级别发生了变化。在这种情况下,您可以批量修复它们。

【讨论】:

【参考方案2】:

有趣的是,您建议的两个属性都是只读的。成员(组的属性)在 Active Directory 中维护。 User 上的 MemberOf 值是根据查询计算得出的,实际上并没有静态存储在用户对象上。

我很确定 userAccountControl 也是一个只读属性,通过 LDAP。 (需要其他方法来直接操作它。)。

不确定这是否有帮助,但可能是正确方向的提示。 (否则完全错误..)

【讨论】:

以上是关于LDAP 和 Active Directory 结果缺少某些结果的字段的主要内容,如果未能解决你的问题,请参考以下文章

LDAP:如何从 Active Directory 中获取所有用户和组

关于 SonarQube 和 Active Directory 之间的简单 Ldap 连接

如何在 php 中使用 LDAP 从 Active Directory 搜索和更新用户数据?

Active Directory 真的符合 LDAP 标准吗?

通过 LDAP 连接到 Active Directory

Apache Active Directory mod_authnz_ldap 不工作