为什么LDAP需要两个步骤;“登录”;(连接然后绑定)

为什么LDAP需要两个步骤;“登录”;(连接然后绑定),ldap,Ldap,关于LDAP,有一件事我不理解(从概念上讲,至少我认为是这样,与特定的实现无关) 我注意到一个典型的LDAP客户端库(例如apache DS)首先执行connect()(某些服务器可能需要用户名/密码),然后执行bind()操作(也需要用户名和密码) 问题: LDAP中这两步操作的意义是什么 它增加了额外的安全性吗 为什么不只是一步呢 这两个步骤的概念意义是什么 事实上,这是有区别的 Connect()指在指定主机名和端口上与LDAP服务器的连接,因为bind()使用指定的RDN和密码绑定到L

关于LDAP,有一件事我不理解(从概念上讲,至少我认为是这样,与特定的实现无关)

我注意到一个典型的LDAP客户端库(例如apache DS)首先执行connect()(某些服务器可能需要用户名/密码),然后执行bind()操作(也需要用户名和密码)

问题:

  • LDAP中这两步操作的意义是什么
  • 它增加了额外的安全性吗
  • 为什么不只是一步呢
  • 这两个步骤的概念意义是什么

事实上,这是有区别的

Connect()指在指定主机名和端口上与LDAP服务器的连接,因为bind()使用指定的RDN和密码绑定到LDAP目录


希望这是有帮助的

当LDAP客户端连接到LDAP服务器时,该连接未经验证。客户端使用绑定操作对连接进行身份验证。然后,服务器使用具有权限和访问控制的连接的授权状态处理连接上的请求

一些(如果不是大多数的话)LDAP API提供单步连接和绑定,必须为其提供用户的凭据,或者提供预构造的绑定请求(有不同类型的绑定请求,简单和SASL)。在您描述的情况下,API很可能建立到服务器的连接,然后向服务器发出绑定请求。如果成功,则设置连接的授权状态。这对客户来说是一种“方便”的方法

将连接与绑定(您提到的两个步骤)分离,以便同一连接可以用于不同的授权状态。每个绑定都会重置连接的授权状态。LDAP客户端可以连接,然后使用一个用户和凭据进行绑定,作为该用户执行一些操作,然后在同一连接上发送另一个绑定请求,以将授权状态更改为其他用户的授权状态。这使得客户端和服务器的效率更高,因为连接不需要进行多次。LDAPv3支持这一点

解除绑定请求的名称是LDAPv2的遗物,它不允许每个连接有多个授权状态。“解除绑定”不是“绑定”的对立面,它会在您发现时断开连接。使用LDAPv3的LDAP客户端可以发送绑定请求以更改连接的授权状态。命名错误的解除绑定请求不会“解除授权”状态,它只是将LDAP客户端与LDAP服务器断开连接

另见:

谢谢。我使用的是ApacheDS,显然,在执行unbind()时,这也会触发断开连接。因此,我认为这两者是联系在一起的,但现在我看到这是一个特定的库问题,而不是一般问题。
UNBIND
request的名称是LDAPv2的遗物,它不允许每个连接有多个授权状态
UNBIND
不是
BIND
的对立面,正如您所发现的,它确实会断开连接。我不知道这一点,所以非常感谢。您知道是否有专门支持LDAPv2的常见ldap服务器吗?我熟悉的服务器同时支持v2和v3,一些专业质量的服务器可以配置为拒绝其中一个。