如何将所有 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
CentOS 6.5安装Openldap添加memberof属性