我想向微软的Active Directory(使用Java)发送一个搜索字符串,上面写着“给我所有拥有启用帐户的用户。”
目前,我有:
String search_string =“(&(objectClass = user))”;
但是,当然,这只会给我AD上的用户。我也想得到那些活跃的人。它是用Java编写的,但我认为它对LDAP不重要。
答案 0 :(得分:9)
为了获得启用的用户,您必须检查userAccountControl属性,特别是它的第二位,它对应于ACCOUNTDISABLE标志。 MS KB 305144
这可以通过LDAP过滤器完成,如下所示:
(!(userAccountControl:1.2.840.113556.1.4.803:=2))
查看有关Filtering for Bit Fields的文章,了解有关此工作的详细信息。
此外,您应该知道计算机帐户是从用户类型继承的,因此您应该在过滤器中添加条件,以将其过滤掉。您还可以检查NORMAL_ACCOUNT标志位(512),以过滤其他类型的帐户。
我不知道活跃用户是什么意思,所以我无法帮助你。
答案 1 :(得分:4)
据我所知,Active-Directory critaria检查帐户是否活动。
How to use the UserAccountControl flags to manipulate user account properties为您提供帐户状态,您可能感兴趣:
要在过滤器中使用此字段,您可以使用LDAP {MATCHING_RULE_IN_CHAIN OID,如Microsoft article Search Filter Syntax中所述。
(&(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.804:=18)))