首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java阅读LDAP

问使用Java阅读LDAP
EN

Stack Overflow用户
提问于 2010-06-07 21:56:15
回答 1查看 4.4K关注 0票数 5

我需要一种有效的方式来读取LDAP中的所有用户。我在Java中有一个超级/root密码

我只需要列出名字就行了。

所有的想法都是值得欣赏的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-07 22:07:03

您可以找到一个很好的代码示例here

代码语言:javascript
复制
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/dc=fraglab,dc=net");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=admin,dc=fraglab,dc=net");
env.put(Context.SECURITY_CREDENTIALS, "yannis");
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setCountLimit(10);
NamingEnumeration<SearchResult> namingEnumeration =
        ctx.search("", "(uid=*)", new Object[]{}, searchControls);
while (namingEnumeration.hasMore()) {
    SearchResult sr = namingEnumeration.next();
    System.out.println("DN: " + sr.getName());
    System.out.println(sr.getAttributes().get("uid"));
    System.out.println("Password:" + new String((byte[]) sr.getAttributes().get("userPassword").get()));
}
ctx.close();

它为Java命名和目录接口JNDI使用LDAP命名服务提供者,并且应该通过小的调整来做你想做的事情(例如,至少放入你的服务器的名称)。documentation for the ldap provider非常好,可以帮助您将其扩展到您的需要。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2990085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档