为什么 LDAP 身份验证例程通常使用两个绑定



我正在使用Spring LDAP,我看到每个人都使用两个绑定。第一个绑定为服务帐户,第二个绑定为具有给定密码的用户。但是我看到即使没有第一个绑定,也可以对ldap中的密码执行用户验证。

谁能解释一下为什么我们在 ldap 中遵循两个绑定?使用服务帐户进行首次绑定的意义是什么?

对于LDAP中的身份验证,您需要具有DN和密码。

通常 2 个绑定的原因是您没有 DN - 用户名不一定是 DN 的一部分。因此,您必须使用服务帐户通过某些属性(例如"mail={mail}")查找用户(DN),然后通过进行另一个绑定来验证找到的DN的密码。

可以在 2 种情况下使用单个绑定:

  1. 您可以在不进行搜索的情况下确定 DN,例如,如果使用 uid+password 登录,并且"uid"是 DN 的一部分,并且 LDAP 层次结构对于所有用户都是扁平的,例如"uid={uid},ou=users,..."。
  2. 您不通过绑定执行密码检查,而是通过服务帐户获取密码哈希并自行比较哈希。
有多种

方法可以针对LDAP进行身份验证。您可以通过获取用户密码并在软件中匹配它(一个绑定)来完成,也可以通过使用用户凭据绑定 LDAP 来完成(两个绑定)。

这两个绑定的东西的工作原理如下:

1)获取用户名并在LDAP中搜索(将1与服务帐户绑定)2) 使用密码进行身份验证(将 2 与用户帐户绑定)

问候

谢尔图克斯

最新更新