我对在基于Java的Web应用程序中使用LDAP身份验证的最佳实践感兴趣。在我的应用程序中,我不想存储用户名\密码,只有一些ID。但是如果LDAP目录中存在任何信息,我想检索附加信息(名称,姓氏)。LDAP最佳实践
LDAP最佳实践
回答
我的团队使用LDAP作为标准认证方式。基本上,我们将LDAP视为任何其他数据库。
要将用户添加到应用程序,您必须从LDAP中选择一个或在LDAP中创建它;当用户从应用程序中删除时,它保留在LDAP中,但无法访问应用程序。
您基本上只需要在本地存储LDAP用户名。您可以每次从LDAP读取LDAP数据(电子邮件,部门等),或者以某种方式从应用程序中读取LDAP数据(尽管从LDAP读取数据可能更简单,更智能,因为LDAP数据可能会更改。当然,如果您需要广泛报告或使用LDAP数据,您可能需要从LDAP中手动或通过批处理任务进行提取。
好的一点是,一旦用户在LDAP中被禁用,它将一次在所有应用程序中被禁用;另外,用户在所有应用程序中都具有相同的凭据在企业环境中,通过一系列内部应用程序,这是一大优势。不要仅为一个应用程序的用户使用LDAP;在这种情况下没有真正的好处。
如果您有多个基于Web的应用程序并希望使用LDAP身份验证,那么预先打包的单点登录解决方案可能会比创建您自己的LDAP身份验证更好。 CAS支持LDAP身份验证,并可以撤回您的应用程序所需的数据。
在我的大学里,我们实际上已经实施CAS作为对抗Active Directory服务器的单一标志。我们还利用CAS来验证我们的J2EE应用程序,并正在使用CAS来验证我们的PHP应用程序。
我们使用AD来保存域的用户。有一些基于用户类型的OU。每个用户都有一个唯一的ID,恰好是他们的学生/员工ID,因此应用程序可以将其用作其数据库中的主键。我们为PHP应用程序提供了数据库驱动的授权方法。 J2EE应用程序的授权来自LDAP中的值。
祝您的应用程序顺利。
那么,您希望用户只输入ID,然后从LDAP中获取其他信息?这很容易。
- 创建LdapInitial上下文和连接到LDAP
- 执行搜索的ID(它应被存储为一些属性值) - 例如(&(用户ID =约翰)(objectClass的=用户)) - 这意味着 “用户ID =约翰和对象类=用户”
- 信息搜索结果对象将包含所有属性(或者你问的那些)
一些LDAP实现(着名的MS ActiveDirectory LDAP)不允许您与匿名用户连接。对于那些你需要有一个技术用户名/密码来连接。
如上所述,当您有很多应用程序时,LDAP通常是有意义的。
P.S.感受一下LDAP是如何尝试Apache Directory Studio的。
有关LDAP的一般最佳做法,请参阅"LDAP: Programming practices"。
- 1. 最佳实践
- 2. 最佳实践
- 3. 最佳实践
- 4. 最佳实践
- 5. 最佳实践
- 6. 最佳实践
- 7. 最佳实践
- 8. 最佳实践
- 9. 最佳实践
- 10. 最佳实践
- 11. 最佳实践?
- 12. 最佳实践
- 13. 最佳实践
- 14. 最佳实践
- 15. 最佳实践
- 16. 最佳实践
- 17. 最佳实践
- 18. 最佳实践
- 19. 最佳实践
- 20. 最佳实践:
- 21. 最佳实践
- 22. 最佳实践
- 23. DataContractSerializer最佳实践?
- 24. CSS最佳实践
- 25. DataBindingSource最佳实践
- 26. Lisp最佳实践
- 27. 最佳实践3
- 28. MVC最佳实践
- 29. DataSet最佳实践?
- 30. Maven最佳实践
不太如此!在我的应用程序数据库中,我希望仅存储来自LDAP的id和相关的DN。如果我需要关于用户的其他信息,我可以使用DN – 2009-02-21 11:01:55
从目录中得到它,尽管它是重复的。但是你真的在问什么? – 2009-02-22 13:37:57