【问题标题】:LDAPSoft AD Browser SQL LDAP query filter based on UserPasswordExpiryTimeComputedLDAPSoft AD Browser SQL LDAP 查询过滤器基于 UserPasswordExpiryTimeComputed
【发布时间】:2020-01-29 06:38:40
【问题描述】:

我们正在使用 LDAPSoft 广告浏览器列出广告服务帐户。我们尝试过滤服务帐户,这些都是密码永不过期。我们尝试了以下查询并返回 0 个结果(我们单击了子树选项复选框以列出子节点)。 并且可以看到 UserPasswordExpiryTimeComputed 值为 null。请帮助我们解决问题。

SELECT from  OU=AAA,OU=VVV,OU=VVV,DC=DDD,DC=COM where msDS-UserPasswordExpiryTimeComputed  NOT NULL

感谢您的提前。

【问题讨论】:

    标签: active-directory ldap ldap-query


    【解决方案1】:

    msDS-UserPasswordExpiryTimeComputed 属性是一个构造属性,这意味着它是在您请求它时计算的。不存储这些值。因此,您不能在查询中使用构造属性。您只能从您已经找到的帐户中阅读它们。

    当帐户设置为密码永不过期时,userAccountControl 属性会更新。这是一个位标志,意味着值的二进制表示中的每个位都是一个具有不同含义的开/关标志。

    您要查找的设置是ADS_UF_DONT_EXPIRE_PASSWD,在文档中显示为十六进制值0x00010000。这是1 0000 0000 0000 0000‬ 的二进制值。因此,当第 17 位为 1 时,密码永不过期。当第 17 位为0 时,密码过期。但是,您可以在查询中使用与 65536‬ 等效的十进制数。

    我通常使用 LDAP 查询表示法,如下所示:

    (&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536))
    

    这将找到密码设置为永不过期的所有用户帐户。这个奇怪的数字被描述为here,作为对象标识符(OID)LDAP_MATCHING_RULE_BIT_AND。那就是按位与运算符,它检查是否设置了某个位。

    我没有对此进行测试,但在 SQL 表示法中,您可能会使用&,即bitwise AND operator,如下所示:

    WHERE userAccountControl & 65536 = 65536
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多