【问题标题】:Java NamingEnumeration - Getting a single element out of a NamingEnumerationJava NamingEnumeration - 从 NamingEnumeration 中获取单个元素
【发布时间】:2017-12-12 10:39:37
【问题描述】:

我正在尝试从 Active Directory 组中获取一些用户并在我们的另一个站点中更新它们。 除了我需要从 NamingEnumeration 获取用户 ID 并将其传递给另一个方法,该方法将通过 REST API 调用对其进行更新之外,该任务几乎已完成。下面是我从 AD 组中获取用户的部分代码:

DirContext myContext = new InitialDirContext(envVars);

    SearchControls searchCtrls = new SearchControls();
    searchCtrls.setSearchScope(SearchControls.SUBTREE_SCOPE);
    String[] attributes = { "cn", "member"};
    searchCtrls.setReturningAttributes(attributes);

    String filter = "(&(objectClass=group)(cn=GROUP_NAME))";
    NamingEnumeration values = myContext.search("DC=XXXX,DC=XXXX",filter,searchCtrls);

    while (values.hasMoreElements())
    {
        SearchResult result = (SearchResult) values.next();
        Attributes attribs = result.getAttributes();
        if (null != attribs)
        {
            for (NamingEnumeration ae = attribs.getAll(); ae.hasMoreElements();)
            {
                Attribute atr = (Attribute) ae.next();
                String attributeID = atr.getID();
                for (
                    Enumeration vals = atr.getAll(); 
                    vals.hasMoreElements(); 
                    System.out.println(attributeID+": "+vals.nextElement())                     
                );
            }
        }
    }

当我运行它时,输出如下所示:

成员:CN=USERNAME,OU=XXX,OU=XXX,OU=XXX,DC=XXX,DC=XXX,DC=XXX
成员:CN=USERNAME,OU=XXX,OU=XXX,OU=XXX,DC=XXX,DC=XXX,DC=XXX

基本上,我需要单独获取这个 CN,即 USERNAME,我将把它传递给另一个方法。

我确实尝试将它们放入字符串数组并处理它们,但无济于事,而且我的时间不多了。 任何想法将不胜感激。谢谢。

【问题讨论】:

  • 只要有一个元素就break

标签: java active-directory


【解决方案1】:

嗯,我确实解决了这个问题。 以下方法对我有用。

if (null != attribs)
        {
            for (NamingEnumeration ae = attribs.getAll(); ae.hasMoreElements();)
            {

                Attribute atr = (Attribute) ae.next();
                for (
                    Enumeration vals = atr.getAll(); 
                    vals.hasMoreElements(); 
                ) {
                        list.add(vals.nextElement().toString());
                }
            }
        }

我将输出放在一个列表中并剪掉不需要的部分以单独获取 CN。 如果这对将来的某人有所帮助,我们会很高兴。

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2021-08-15
    • 1970-01-01
    • 2014-07-28
    • 2023-01-12
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多