我想向Microsoft的活动目录(使用Java)发送一个搜索字符串,指出“给我所有拥有已启用帐户的用户”。仅检索活动目录上的已启用帐户
目前,我有:
字符串SEARCH_STRING = “(&(objectClass的=用户))”;
但是,当然,这只能给我AD的用户。我也想只得到那些活跃的人。这是用Java编写的,但我认为它对于LDAP来说不重要。
我想向Microsoft的活动目录(使用Java)发送一个搜索字符串,指出“给我所有拥有已启用帐户的用户”。仅检索活动目录上的已启用帐户
目前,我有:
字符串SEARCH_STRING = “(&(objectClass的=用户))”;
但是,当然,这只能给我AD的用户。我也想只得到那些活跃的人。这是用Java编写的,但我认为它对于LDAP来说不重要。
为了获得启用的用户,您必须检查userAccountControl属性,特别是其第二位,它对应于ACCOUNTDISABLE标志。 MS KB 305144。
这可以用LDAP过滤器来完成这样的:
(!(userAccountControl:1.2.840.113556.1.4.803:=2))
检查这篇文章Filtering for Bit Fields的详细信息,这项工作如何。
此外,您应该知道计算机帐户是从用户类型继承的,因此您应该在您的过滤条件中添加一个条件以将其过滤掉。您还可能需要检查NORMAL_ACCOUNT标志位(512)以过滤其他类型的帐户。
我不知道你是什么意思的活跃用户,所以我不能帮你在那里。
+1,我有半分钟的精神:o) – JPBlanc 2012-03-01 07:56:57
这里是据我所知活动目录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)))
您需要弄清楚在您的上下文中“活动”意味着什么,并编写相应的LDAP查询。既然你还没有定义'积极'的含义,我怀疑这里有人能帮助你。 – 2012-03-01 01:44:49
感谢您的快速响应。代码的哪一部分决定了'主动'的定义? (通常,我创建了一个LDAP Property对象,它充满了用户名,密码和主机信息以获得AD连接。然后,我创建了上下文和搜索查询,并从AD得到我的回应。我有点困惑定义什么“主动”意味着什么。)你能否阐明? (我可以提供我的代码,但我不知道哪些部分会被认为是相关的。) – Sal 2012-03-01 02:35:51
您必须为自己决定“主动”的含义以及如何映射到您可以查询的LDAP属性。我们不知道您的情况下“主动”是什么意思。 – 2012-03-01 02:57:30