Java LDAP管理 - 使用netscape.ldap包,检查身份验证和添加用户

时间:2009-09-30 13:39:18

标签: java ldap

我目前正在使用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”);无需考虑我必须实现的各种安全方法来正确获取密码。

4 个答案:

答案 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之下(开发人员的选择) ) 执照。我在这里附上他们的演讲。希望你会喜欢它。

UnboundID LDAP API Presentation

答案 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),那就有了一些东西。