我对在基于Java的Web应用程序中使用LDAP身份验证的最佳实践感兴趣。在我的应用程序中,我不想存储用户名\密码,只存储一些ID。但我想检索附加信息(名称,姓氏),如果LDAP目录中存在这些信息。
答案 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中获取其余信息?这很容易。
某些LDAP实现(着名的MS ActiveDirectory LDAP)不允许您与匿名用户建立连接。对于那些您需要技术用户ID /密码才能连接的人。
如上所述,当你有很多应用程序时,LDAP通常是有意义的。
P.S。感觉LDAP是什么尝试Apache Directory Studio。