答案1
您无法在 LDAP 搜索中执行此操作,您需要进行一些额外的处理。首先,几乎肯定无法保证搜索返回的属性和值的顺序。
答案2
一些 LDAP 服务器,例如 OpenLDAP,支持值返回过滤器控制(见RFC 3876)。
您可以将此控件与 OpenLDAP 的ldap搜索使用 CLI 参数 -E。
例子:-E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))"
。
请注意,该过滤器是所谓的简单过滤器没有操作数。
以我的在线演示为例Æ-DIR:
没有控制:
$ ldapsearch -H "ldaps://demo.ae-dir.com" -b "ou=ae-dir" -s sub -x -D "uid=aead,cn=ae,ou=ae-dir" -w CorrectHorseBatteryStaple -LL "(memberOf=cn=test-users-2,cn=test,ou=ae-dir)" memberOf
version: 1
dn: uid=dsrg,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir
memberOf: cn=test-users-3,cn=test,ou=ae-dir
dn: uid=rqei,cn=test,ou=ae-dir
memberOf: cn=test-users-1,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir
使用匹配值控制:
$ ldapsearch -H "ldaps://demo.ae-dir.com" -b "ou=ae-dir" -s sub -x -D "uid=aead,cn=ae,ou=ae-dir" -w CorrectHorseBatteryStaple -LL -E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))" "(memberOf=cn=test-users-2,cn=test,ou=ae-dir)" memberOf
version: 1
dn: uid=dsrg,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir
dn: uid=rqei,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir