有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从CN获取SamAccountName的java LDAP子查询

目前我有下面提到的这个查询,它返回所有用户,但每个用户都有一个名为manager的参数,它返回

"CN=Peder Ellingsen,OU=Users,OU=NO,OU=Countries,DC=xds,DC=xxx,DC=com"

需要samAccountName而不是上面的CN,需要LDAP子查询的帮助,它可以帮助我通过修改下面提到的查询直接获得samAccountName

为了得到samAccountName,想要避免对LDAP服务器的双重点击

(&(objectCategory=person)(objectClass=user)(memberof=cn=MyCompass_NO,OU=Groups,OU=Common,OU=Applications,DC=xds,DC=xxx,DC=com))

共 (2) 个答案

  1. # 1 楼答案

    假设你的过滤器就是你上面写的,试试这个

      (&(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=*)) 
    
  2. # 2 楼答案

    根据您想要的内容进行筛选,并获取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属性