Java 仅检索active directory上启用的帐户
我想向Microsoft的Active Directory(使用Java)发送一个搜索字符串,上面写着“给我所有启用帐户的用户” 目前,我有: 字符串搜索_String=“(&(objectClass=user))”Java 仅检索active directory上启用的帐户,java,active-directory,Java,Active Directory,我想向Microsoft的Active Directory(使用Java)发送一个搜索字符串,上面写着“给我所有启用帐户的用户” 目前,我有: 字符串搜索_String=“(&(objectClass=user))” 但是,当然,这只给了我广告上的用户。我想也只得到那些活跃的用户。它是用Java编写的,但我认为它与LDAP无关。为了获得启用的用户,必须检查userAccountControl属性,特别是它的第二位,它对应于ACCOUNTDISABLE标志 这可以通过LDAP筛选器完成,如下所示:
但是,当然,这只给了我广告上的用户。我想也只得到那些活跃的用户。它是用Java编写的,但我认为它与LDAP无关。为了获得启用的用户,必须检查userAccountControl属性,特别是它的第二位,它对应于ACCOUNTDISABLE标志 这可以通过LDAP筛选器完成,如下所示:
(!(userAccountControl:1.2.840.113556.1.4.803:=2))
查看这篇关于的文章,了解有关如何工作的详细信息
您还应该知道计算机帐户是从用户类型继承的,因此您应该在筛选中添加一个条件,以筛选出它们。您还可能需要检查普通账户标志(512)的位,以过滤其他类型的账户
我不知道您所说的活动用户是什么意思,因此我无法在这方面帮助您。据我所知,这里是检查帐户是否处于活动状态的active Directory标准 为您提供帐户状态,您可能对以下内容感兴趣:
- 帐户禁用(2)
- 锁定(16)
您需要了解“活动”在上下文中的含义,并编写相应的LDAP查询代码。由于您尚未定义“活动”的含义,我怀疑这里的任何人都无法帮助您。感谢您的快速回复。代码的哪一部分决定了“活动”的定义方式?(通常,我会创建一个LDAP属性对象,其中包含用户名、密码和主机信息,以获取AD连接。然后,我创建上下文和搜索查询,并从AD获取响应。我对定义“活动”的含义有点困惑。)您能解释一下吗?(我可以提供我的代码,但我不知道哪些部分是相关的。)您必须自己决定“活动”是什么意思,以及如何映射到可以查询的LDAP属性。我们不知道您在上下文中所说的“活动”是什么意思。如果我完全误解了您的意思,请告诉我,但我指的是Microsoft的active Directory。我正在连接到服务器并提供上面描述的搜索查询。您所说的“活动”是什么意思?
(&(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.804:=18)))