首页 > 解决方案 > 如何检查用户是否处于活动状态?

问题描述

我正在使用 Java 从客户端服务器查询 Active Directory。

我的基础 DN 是

CN=GGM-FOX-MANAGER,OU=ClaimRoles,OU=Groups,OU=ENT,DC=ad,DC=myhostname,dc=com

所以我试图使用这个查询从上面提到的组中提取所有用户

(objectClass=*)

返回这么多键和值。

例如:

displayName: GGM-FOX-MANAGER
member: CN=100,OU=Employees,OU=Shopping,DC=RB,DC=ad,DC=myhostname,dc=com;and more users separated by ;
objectClass: top;group
objectCategory: CN=Group,Cn=Schema,CN=Configuration,DC=ad,DC=myhostname,dc=com
cn=GGM-FOX-MANAGER
distinguishedName=CN=GGM-FOX-MANAGER,OU=ClaimRoles,OU=Groups,OU=ENT,DC=ad,DC=myhostname,dc=com
etc

如何编写查询以仅提取成员,而不是获取上述示例数据?其次,我如何知道成员的状态,是否使用查询?

使用 Java

标签: javaactive-directoryldap

解决方案


每当进行 LDAP 查询时,您都可以告诉它您希望它为每个结果返回哪些属性。如果您不指定任何内容,它将为您提供一切。您可以告诉它只返回member属性。

要查找每个成员的信息,您必须遍历该member属性的每个值,从而为您提供每个成员的专有名称 (DN)。然后您可以绑定到该用户对象并查看该对象的属性。

如果您想知道帐户是否启用,您需要查看userAccountControl属性的第二位。在 Java 中,您使用userAccountControlwith的值& 2。如果结果是2,则它被禁用。如果结果为0,则启用。我不是 Java 开发人员,但您可以在这个答案中找到一个示例。


推荐阅读