【问题标题】:Use email and password to authenticate user in LDAP使用电子邮件和密码验证 LDAP 中的用户
【发布时间】:2017-06-05 04:11:55
【问题描述】:

我是 LDAP 新手,我正在开发一个使用 LDAP 进行身份验证的应用程序。 有没有办法使用电子邮件和密码对 LDAP 中的用户进行身份验证? 或者我只能通过以下方式实现:

  1. 通过给定的电子邮件获取用户的 DN。
  2. 用 DN 和密码绑定用户。

是否有一个配置选项可以允许 LDAP 使用其他一些字段来验证用户?

【问题讨论】:

  • 你必须按照你所说的两个步骤。
  • @EJP,好的,非常感谢。
  • 对于绑定,您需要 thr 用户的 DN 和与之关联的密码。所以它不是一个单一的属性。这就是为什么你需要这两个步骤。首先使用电子邮件找到 DN,然后使用该 DN 登录。一些目录(如 AD)虽然允许使用电子邮件地址。但这不是 ldap!

标签: ldap openldap


【解决方案1】:

如果您计划让您的应用程序使用目录服务作为外部用户存储,欢迎来到支持目录的应用程序的世界。您的应用程序不必为用户建立 LDAP 会话。通常,您将拥有一个服务帐户,您的应用程序将使用该服务帐户与目录服务建立 LDAP 会话。当用户登录到您的应用程序时,您的身份验证模块将使用某些唯一属性(uid、mail...)查找用户条目,因此可以完成简单的身份验证(密码哈希比较)。

这在很大程度上取决于您的基础架构。

编辑:Spring Security 将此技术称为密码比较身份验证。

【讨论】:

  • 没有。应用程序必须在查找用户后尝试以用户身份绑定。 LDAP 服务器用于检查密码并执行与绑定相关的任何操作。这就是它的用途。否则服务器没有机会检查密码过期、帐户锁定、密码必须重置、密码失败次数过多等。
  • 我的 LDAP 目录(约 200k,不是 AD)中的用户帐户大多是从元目录提供的,有些是自助服务的。根据我的日志文件,没有一个 BIND,只显示服务帐户。我们的 SAP 顾问似乎喜欢这种方式。我猜这只是一种方法,而且 IT 安全性似乎已经获得批准。请注意,连接成本很高,正确进行的搜索很便宜。我应该担心吗? ;-)
  • 您在政策执行方面有一定的意义。在我的网站上不需要它,所有漂亮的功能都是由身份验证模块实现的,它使用我的目录作为用户存储。正如我所说,这取决于。我当然可以增加我的复制拓扑以应对数千个短暂的用户会话,但现在我不必这样做。实施应遵循需求分析。我们不是在这里咨询,更像是在钓鱼。
  • 听从 EJP 的建议。
  • @marabu 因此,在您特定缺乏密码策略的特定情况下,您的特定 IT 安全人员似乎已经批准了此错误,假设他们甚至注意到了它。这并不适合所有人。它甚至不适合你。这是一个编程错误,也是一个 IT 安全错误:他们应该注意到它并且应该反对它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多