【问题标题】:LDAP & Active Directory results missing fields for some resultsLDAP 和 Active Directory 结果缺少某些结果的字段
【发布时间】: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 之后创建的,这可能是因素。

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

【问题讨论】:

    标签: active-directory ldap


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 1970-01-01
        相关资源
        最近更新 更多