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

Why LDAP authentication routine typically use two binds?

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

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

有多种方法可以针对 LDAP 进行身份验证。 您可以通过获取用户密码并在您的软件中匹配它(一次绑定)来完成此操作,或者您可以通过使用用户凭据绑定 LDAP(两次绑定)来完成此操作。

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

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

此致

Shelltux

要在 LDAP 中进行身份验证,您需要有 DN 和密码。

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

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

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