如何将所有 memberOf 属性分配给 LDAP 中的特定用户

Posted

技术标签:

【中文标题】如何将所有 memberOf 属性分配给 LDAP 中的特定用户【英文标题】:How do I get all the memberOf Attribute assign to a particular user in LDAP 【发布时间】:2015-10-13 20:20:14 【问题描述】:

我创建了一个使用 LDAP 进行身份验证的应用程序。我需要找出用户分配到的所有组名。有没有办法找出来。我已经编写了代码,但不知何故它只返回一个随机的组名。

下面是我获取所有 memberOf 用户的代码。

private class UserAttributesMapper implements AttributesMapper 
        @Override
        public Object mapFromAttributes(Attributes attributes) throws NamingException 
            LdapUser user = new LdapUser();
            user.setCn((String)attributes.get("cn").get());
            user.setMemberOf((String)attributes.get("memberOf").get());

            /*String member = (String)attributes.get("memberOf").get();
            int length = attributes.get("memberOf").size();
            if(member != null)
                for(int i = 0;i<= length; i++)
                    user.setMemberOf(member);
                
            */


            //user.setMemberOf(attributes.get("memberOf").getID());
            user.setsAMAccountName((String)attributes.get("sAMAccountName").get());
            return user;
        
    

该类用于为用户设置属性和返回属性。

提前致谢。

【问题讨论】:

【参考方案1】:

这比我想象的要容易得多。请在下面找到代码。在这种情况下,您只需要枚举 for 循环中的所有 memberOf 并在 List 中分配 int,然后返回 List 以及所有其他属性。

下面是代码。

private class UserAttributesMapper implements AttributesMapper 
    @Override
    public Object mapFromAttributes(Attributes attributes) throws NamingException 
        LdapUser user = new LdapUser();
        user.setCn((String)attributes.get("cn").get());
        List<String> memberOf = new ArrayList<String>();

        for(Enumeration vals = attributes.get("memberOf").getAll(); vals.hasMoreElements();)
            memberOf.add((String)vals.nextElement());
        
        user.setMemberOf(memberOf);
        user.setsAMAccountName((String)attributes.get("sAMAccountName").get());
        user.setMail((String)attributes.get("mail").get());
        return user;
    

【讨论】:

以上是关于如何将所有 memberOf 属性分配给 LDAP 中的特定用户的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails Spring 应用程序中获取 LDAP 属性 memberof

Confluence 6 LDAP 成员结构设置

CentOS 6.5安装Openldap添加memberof属性

如何在春季测试 LDAP 安全配置?

在spring security3中解析memberOf属性以获取组

使用 SQL Server 2005 通过 LDAP 访问 Active Directory 角色成员资格