LDAP最佳实践

时间:2009-02-19 22:16:16

标签: java java-ee ldap

我对在基于Java的Web应用程序中使用LDAP身份验证的最佳实践感兴趣。在我的应用程序中,我不想存储用户名\密码,只存储一些ID。但我想检索附加信息(名称,姓氏),如果LDAP目录中存在这些信息。

4 个答案:

答案 0 :(得分:6)

我的团队使用LDAP作为标准身份验证方式。基本上,我们将LDAP视为任何其他数据库。

要将用户添加到应用程序,您必须从LDAP中选择一个或在LDAP中创建它;当用户从应用程序中删除时,它将保留在LDAP中,但无法访问应用程序。

您基本上只需要在本地存储LDAP用户名。您可以每次从LDAP读取LDAP数据(电子邮件,部门等),或者以某种方式将其拉入应用程序,但是从LDAP读取它可能更简单,更智能,因为LDAP数据可能会更改。当然,如果您需要广泛报告或使用LDAP数据,您可能希望从LDAP(手动或批处理任务)中提取它。

好消息是,一旦在LDAP中禁用了用户,就会立即在所有应用程序中禁用它;此外,用户在所有应用程序中具有相同的凭据在企业环境中,有一堆内部应用程序,这是一个主要的优点。不要仅为一个应用程序的用户使用LDAP;在那种情况下没有真正的好处。

答案 1 :(得分:4)

有关LDAP的一般最佳做法,请参阅"LDAP: Programming practices"

答案 2 :(得分:1)

如果您有多个基于Web的应用程序并且想要使用LDAP身份验证,则预先打包的单点登录解决方案可能比创建自己的LDAP身份验证更好。 CAS支持LDAP身份验证,可以撤回应用程序所需的数据。

在我的大学里,我们实际上已经将CAS作为单点登录我们的Active Directory服务器。我们还使用CAS来验证我们的J2EE应用程序,并正在使用CAS来验证我们的PHP应用程序。

我们使用AD来保存域的用户。根据用户类型,有一些OU。每个用户都有一个唯一的ID,恰好是他们的学生/员工ID,因此应用程序可以将其用作数据库中的主键。我们为PHP应用程序提供了数据库驱动的授权方法。 J2EE应用程序的授权来​​自LDAP中的值。

祝你的申请顺利。

答案 3 :(得分:0)

那么,您希望用户只输入ID,然后从LDAP中获取其余信息?这很容易。

  1. 创建LdapInitial上下文并连接到LDAP
  2. 搜索ID(应将其存储为某些属性值) - 例如(&(userid = john)(objectClass = user)) - 表示“userid = john AND objectClass = user”
  3. SearchResult对象将包含所有属性(或您提出的属性)
  4. 某些LDAP实现(着名的MS ActiveDirectory LDAP)不允许您与匿名用户建立连接。对于那些您需要技术用户ID /密码才能连接的人。

    如上所述,当你有很多应用程序时,LDAP通常是有意义的。

    P.S。感觉LDAP是什么尝试Apache Directory Studio。