我目前正在使用netscape.ldap包来处理LDAP连接和身份验证。我不知道这是否是LDAP管理的最佳框架,但它仍然是我所拥有的。
使用这个我真的必须检查用户是否存在,这样做是非常丑陋和糟糕的陈述,如下所示:
try{
conn.connect(this.host, this.port, this.dn, this.password);
this.validUser = true;
}
catch(LDAPException e) {
this.validUser = false;
}
这是非常丑陋和不好的做法,然而,它简单易懂。这是最重要的部分,我希望它尽可能简单易用。
然而,netscape.ldap的文档感觉过时了。那么,有人建议我如何更好地实现这个或与另一个包一起实现? (令人难以忍受的是数百个依赖项)。
此外,我希望能够做类似的事情:conn.add(“user”,“pass”);无需考虑我必须实现的各种安全方法来正确获取密码。
答案 0 :(得分:2)
我于9月21日至23日访问过LDAPCon / LinuxCon。有一些非常好的演示文稿。有一个标题为“UnboundID LDAP SDK”。整个概念是JNDI是一个通用目录API,而不是一个真正的LDAP API。此外,Netstcape目录SDK自2002年以来尚未更新,JLDAP已过时。因此,Java开发人员没有可用的特定于LDAP的SDK。
两位前Sun软件工程师(Neil Wilson和David Ivy)发表了演讲,他们创建了自己的公司(UnboundID)并专门为LDAP编写了整个SDK,并将其置于GPL v2和GPL v2.1之下(开发人员的选择) ) 执照。我在这里附上他们的演讲。希望你会喜欢它。
答案 1 :(得分:2)
Spring LDAP是推荐的方法。
Netscape LDAP SDK for Java最后一次发布于2000年中期。
虽然在某些情况下可能会在多年内不会发生,因为API会执行所需的一切并且没有未完成的“已知”错误,但这些并不是唯一的风险。在这种情况下,由于没有对Netscape SDK的主动支持,您永远不会确定。至少在Spring LDAP中,虽然自2010年以来一直没有需要发布,但它仍然拥有一个非常活跃的用户群和论坛,就像这篇文章一样。
就依赖性而言,如果你需要1个,2个甚至5个罐来支持它,如果它们都来自同一个地方,那有什么关系呢?如果这是一个很大的交易,只需获得包含依赖项的版本。
此信息的提供对于遇到此问题的任何人来说都比原始海报更有利,他们自2009年以来肯定会解决他的问题:D
答案 2 :(得分:1)
查看Spring support的LDAP操作。您可以在SpringSource网站上找到introduction。我不确定它是否符合你的要求(毕竟它有依赖性)但效果很好。
答案 3 :(得分:1)
我认为更好的方法是始终搜索ldap结构。从这个意义上说,您将创建一个连接(可能是一个匿名绑定),然后进行搜索。像这样:
LDAPConnection ld = new LDAPConnection();
ld.connect(LDAP_SERVER, LDAP_PORT);
LDAPSearchResults res = ld.search(BASE_DN, SEARCH_SCOPE, "(uid=" + THE_ID +")", null, false);
检查结果。如果你得到任何东西(一个DN),那就有了一些东西。