2012-03-01 58 views
2

我想向Microsoft的活动目录(使用Java)发送一个搜索字符串,指出“给我所有拥有已启用帐户的用户”。仅检索活动目录上的已启用帐户

目前,我有:

字符串SEARCH_STRING = “(&(objectClass的=用户))”;

但是,当然,这只能给我AD的用户。我也想只得到那些活跃的人。这是用Java编写的,但我认为它对于LDAP来说不重要。

+1

您需要弄清楚在您的上下文中“活动”意味着什么,并编写相应的LDAP查询。既然你还没有定义'积极'的含义,我怀疑这里有人能帮助你。 – 2012-03-01 01:44:49

+0

感谢您的快速响应。代码的哪一部分决定了'主动'的定义? (通常,我创建了一个LDAP Property对象,它充满了用户名,密码和主机信息以获得AD连接。然后,我创建了上下文和搜索查询,并从AD得到我的回应。我有点困惑定义什么“主动”意味着什么。)你能否阐明? (我可以提供我的代码,但我不知道哪些部分会被认为是相关的。) – Sal 2012-03-01 02:35:51

+1

您必须为自己决定“主动”的含义以及如何映射到您可以查询的LDAP属性。我们不知道您的情况下“主动”是什么意思。 – 2012-03-01 02:57:30

回答

9

为了获得启用的用户,您必须检查userAccountControl属性,特别是其第二位,它对应于ACCOUNTDISABLE标志。 MS KB 305144

这可以用LDAP过滤器来完成这样的:

(!(userAccountControl:1.2.840.113556.1.4.803:=2)) 

检查这篇文章Filtering for Bit Fields的详细信息,这项工作如何。

此外,您应该知道计算机帐户是从用户类型继承的,因此您应该在您的过滤条件中添加一个条件以将其过滤掉。您还可能需要检查NORMAL_ACCOUNT标志位(512)以过滤其他类型的帐户。

我不知道你是什么意思的活跃用户,所以我不能帮你在那里。

+0

+1,我有半分钟的精神:o) – JPBlanc 2012-03-01 07:56:57