我有三个与LDAP和Java相关的问题。
whencreated属性标识新用户。whenchanged属性进行标识。发布于 2011-08-02 14:11:03
LDAP 搜索 过滤器应该为您提供所需的服务。
(&(objectClass=user)(whenCreated>=20110701000000.0Z))在2011年7月1日或之后创建用户帐户。(&(objectClass=user)(whenChanged>=20110701000000.0Z))在2011年7月1日或之后更改用户帐户。(&(objectClass=user)(whenChanged>=20110701000000.0Z)(userAccountControl:1.2.840.113556.1.4.803:=2))使帐户在2011年7月1日或之后更改,并且已被禁用。使用位滤波 匹配规则标识符检查特定的标志。如果经常执行这些查询,您可能需要索引 whenCreated和whenChanged属性。
发布于 2011-08-02 12:18:49
1) LDAP是一种协议,在这种协议中,您不能(据我所知)对结果进行手动排序(在您的情况下,用Java)。您可能会发现的另一件事是搜索存储在它自己的字段中的值,如Active Directory中的msSFU30MaxUidNumber,以获得AD中最大的UNIX。
编辑:如@所指出的,如果LDAP服务器支持排序,则可以指定排序。在Java中,看看javax.naming.ldap.SortControl
2)我认为这和1一样。
3)是的,请看userAccountControl字段。它包含可以在这里找到的值:http://support.microsoft.com/kb/305144,例如ACCOUNTDISABLE (2)。
发布于 2011-08-02 12:53:37
通过持久搜索的Active 是否支持在更改时通知LDAP客户端? (但请注意,每个连接的搜索限制为5次)。我个人从未使用过这种方法,但是有一些例子是这里、这里和这里 (特别要注意的是,Active显然对这些搜索使用了不同的OID。请注意,对ADD的监视是非常直接的,但是修改将需要您的Java应用程序进行一些工作,因为Active Directory会在任何修改操作上发送修改通知,而不管属性如何。
@raddeman对于锁/解锁和启用/禁用是完全正确的。userAccountControl上的简单按位操作将帮助您提取这些值(例如,userAccountControl & 2 == 2表示用户已被禁用)。
https://stackoverflow.com/questions/6911883
复制相似问题