目前我有如下所述的查询,它返回所有用户,但每个用户都有一个名为manager的参数返回
"CN=Peder Ellingsen,OU=Users,OU=NO,OU=Countries,DC=xds,DC=xxx,DC=com"
需要samAccountName
而不是上面的CN,需要LDAP子查询帮助,这可以帮助我通过修改下面提到的查询直接获取samAccountName
希望避免双击到LDAP服务器只是为了得到samAccountName
。
(&(objectCategory=person)(objectClass=user)(memberof=cn=MyCompass_NO,OU=Groups,OU=Common,OU=Applications,DC=xds,DC=xxx,DC=com))
答案 0 :(得分:0)
假设你的过滤器是你上面写的那个试试这个
(&(objectCategory=person)(objectClass=user)(sAMAccountName=*)(memberof=cn=MyCompass_NO,OU=Groups,OU=Common,OU=Applications,DC=xds,DC=xxx,DC=com))
这将给出第一个参数SamAccountName = username
如果您只想打印Samaccountname,请使用此
Attributes attrs = result.getAttributes();
Attribute attr = attrs.get(sAMAccountName);
if(attr!=null)
{
NamingEnumeration e = attr.getAll();
while (e.hasMore()) {
String value = (String) e.next();
System.out.println(value);
}}
如果您想列出所有Samaccountname,请使用此
(&(objectCategory=person)(sAMAccountName=*))
答案 1 :(得分:0)
根据您的需要进行过滤,并获取sAMAccountName,以下是我在服务器中的操作方式:
ldapsearch -h host -p port -b dc=organization.com -W -D cn=admin,dc=organization.com '(&(objectclass=person)(uid=someuid))' sAMAccountName
有趣的部分是过滤器
'(&(objectclass=person)(uid=someuid))' sAMAccountName
您按objectclass和uid过滤,并获取sAMAccountName属性。