Active directory 基于UserPasswordExpiryTimeComputed的LDAPSoft AD Browser SQL LDAP查询筛选器

Active directory 基于UserPasswordExpiryTimeComputed的LDAPSoft AD Browser SQL LDAP查询筛选器,active-directory,ldap,ldap-query,Active Directory,Ldap,Ldap Query,我们正在使用LDAPSoft广告浏览器列出广告服务帐户。我们尝试过滤服务帐户,这些都是密码永不过期的。我们尝试了下面的查询并返回了0个结果(我们单击了子树选项复选框以列出子节点)并且可以将UserPasswordExpiryTimeComputed值视为null。请帮助我们解决此问题。 SELECT from OU=AAA,OU=VVV,OU=VVV,DC=DDD,DC=COM where msDS-UserPasswordExpiryTimeComputed NOT NULL 感谢您的帮

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

SELECT from  OU=AAA,OU=VVV,OU=VVV,DC=DDD,DC=COM where msDS-UserPasswordExpiryTimeComputed  NOT NULL
感谢您的帮助。

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

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

您要查找的设置是
ADS\u UF\u DONT\u EXPIRE\u PASSWD
,它在文档中显示为十六进制值
0x00010000
。这是
1 0000的二进制值‬。因此,当第17位为
1
时,密码永远不会过期。当第17位为
0
时,密码过期。但是,您可以使用相当于
65536的十进制数‬

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

(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536))
WHERE userAccountControl & 65536 = 65536
将查找密码设置为永不过期的所有用户帐户。这个奇怪的数字被描述为对象标识符(OID)
LDAP\u匹配\u规则\u位\u和
。这是按位AND运算符,用于检查是否设置了某个位

我还没有对此进行测试,但在SQL表示法中,您可能会使用
&
,这是一种类似以下内容的方法:

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