如何从LDAP查询多个用户

11

如何从LDAP查询多个用户。

我在我的Java程序中使用DirContext.search(base,filter,scope);

目前它只能使用一个值的过滤器正常工作。过滤器为("uid=name")

但我的需求是一次传递多个名称到过滤器中,例如:

filter=("uid=name1,name2,name3....")  .

可能是Ldap filter multiple UIDs的重复问题。 - Beck Yang
1个回答

29

LDAP使用“PREFIX”符号来表示其过滤器。

例如:

OR条件

(|(attr1=val1)(attr2=val2)(attr1=val2))

AND 条件

(&(attr1=val1)(attr2=val2)(attr1=val2))

在您的情况下,筛选条件将是这样的:

filter = "(|(uid=name1)(uid=name2)(uid=name3))"

以上过滤器的意思是:

查找具有 uid=name1 OR uid=name2 OR uid=name3 的任何用户。

这将列出用户ID为 name1、name2 或 name3 的用户。


更多示例:

相等: (attribute=abc) ,例如 (&(objectclass=user)(displayName=JohnDoe))

否定: (!(attribute=abc)) ,例如 (!objectClass=group)

存在: (attribute=*) ,例如 (mailNickName=*)

不存在: (!(attribute=*)) ,例如 (!proxyAddresses=*)

大于等于: (attribute>=abc) ,例如 (storageQuota>=100000)

小于等于: (attribute<=abc) ,例如 (storageQuota<=100000)

相似度: (attribute~=abc) ,例如 (displayName~=JohnDoe)

*(~=可能不适用于所有目录服务器!)

通配符: 例如(sn=J*)或(mail=*@example.com)或(givenName=*John*)


希望这有所帮助!


1
传递的ID数量是否有限制?传递2000个用户ID是否不合理? - HPWD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接