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

vir*_*ani 3 java spring ldap spring-security

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

下面是我的代码,以获取所有成员的用户.

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

vir*_*ani 6

这比我想象的要容易得多.请在下面找到代码.在这里你只需要枚举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;
    }
}
Run Code Online (Sandbox Code Playgroud)