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

时间:2015-01-28 05:42:09

标签: java spring ldap openldap spring-ldap

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

任何人都可以解释为什么我们在ldap中遵循两个绑定?使用服务帐户进行第一次绑定有什么意义?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

有多种方法可以对LDAP进行身份验证。 您可以通过获取用户密码并在软件中进行匹配(一次绑定)来实现,也可以通过使用用户凭据绑定LDAP(两种绑定)来实现。

这两个绑定的东西如下:

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

此致

Shelltux