java ldap获取_在java中使用Ldap获取组

如何使用Active Directory获取特定用户组?

我正在获得所有组,但我想获得用户所属的组

public static String ldapUri = "ldap://pdc.example.com:389";

public static String usersContainer = "cn=users,dc=example,dc=com";

public ArrayList getUserGroups(String email, String password){

ArrayList list = new ArrayList();

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

env.put(Context.PROVIDER_URL, ldapUri);

env.put(Context.SECURITY_PRINCIPAL, email);

env.put(Context.SECURITY_CREDENTIALS, password);

try {

DirContext ctx = new InitialDirContext(env);

SearchControls ctls = new SearchControls();

String[] attrIDs = { "cn" };

ctls.setReturningAttributes(attrIDs);

ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);

NamingEnumeration answer = ctx.search(usersContainer, " (objectclass=group)", ctls);

while (answer.hasMore()) {

SearchResult rslt = (SearchResult) answer.next();

Attributes attrs = rslt.getAttributes();

String groups = attrs.get("cn").toString();

String [] groupname = groups.split(":");

String userGroup = groupname[1];

System.out.println(attrs.get("cn"));

}

ctx.close();

} catch (NamingException e) {

e.printStackTrace();

}

return list;

}

解决方法:

我通过使用它来获取用户的所有组

String[] attrIDs = {"cn"};

ctls.setReturningAttributes(attrIDs);

String[] attributes = {"memberOf"};

ctls.setReturningAttributes(attributes);

NamingEnumeration> answer = ctx.search(usersContainer, "(&(objectclass=user)(sAMAccountName=userName))", ctls);

标签:java,ldap

来源: https://codeday.me/bug/20190611/1220840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值