LDAP Sub Query从CN获取SamAccountName

时间:2015-08-04 09:07:33

标签: java ldap

目前我有如下所述的查询,它返回所有用户,但每个用户都有一个名为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))

2 个答案:

答案 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属性。