使用BIND身份验证机制

时间:2016-06-09 11:17:01

标签: ldap spring-ldap spring-security-ldap

如果LDAPv3与BIND身份验证机制一起使用,那么在客户端和ldap服务器之间是否创建了多个连接?或者只是多个会话?

根据我的理解, 使用ldapv3,对于已部署的应用程序,将使用manager dn和password仅从客户端到LDAP服务器创建单个连接。来自客户端使用用户登录凭据的每个BIND请求都不会创建连接。它只是创建一个新会话 - 使用manager dn和password创建的单个连接上的不同凭据进行重新绑定。

BIND请求可以通过单个连接同时发送到LDAP服务器吗?

2 个答案:

答案 0 :(得分:1)

我认为我们需要一些背景。

LDAP使用TCP作为传输协议。一旦通过TCP建立传输连接,LDAP就可以在TCP连接中执行LDAP请求。

您可以建立TCP连接并绑定为一个用户,然后绑定为同一TCP连接的其他用户。

当然,TCP连接通常在未根据TCP超时值使用时死亡,并且可能由客户端或服务器关闭。 (或中间的负载均衡器)

仅讨论LDAPv3 RFC 4511(第4.2.1节),指出无法在具有任何其他未完成操作的连接上处理绑定操作。特别是“在处理绑定请求之前,所有未完成的操作必须完成或被”放弃“和”在发送绑定请求之后,客户端不得发送更多的LDAP PDU,直到收到绑定响应。“

LDAP是一种固有的异步协议, EXCEPT 用于BindRequests,这意味着,在大多数情况下,您可以通过同一连接发出多个并发请求,客户端将能够将响应与其相关联适当的要求。

大多数JAVA LDAP SDK和其他LDAP API函数调用都具有同步操作和异步操作版本。

-Jim

答案 1 :(得分:0)

这一切都完全混淆了。绑定请求是通过现有连接创建的。他们要么成功要么失败。如果成功,它们会创建一个排序的LDAP会话,但它只会与建立的连接一样长,或者直到另一个BIND请求。 LDAP连接通常是短暂的:它们仅用于验证用户,或从DIT检索有关他的信息。它们不是长寿或持久的:至少它们不应该是,如果编程正确的话。

  

BIND请求可以通过单个连接同时发送到LDAP服务器吗?

Nothing 可以通过单个连接同时发送到任何内容。这个问题没有意义。 [排除了多路复用协议,但LDAP不是其中之一。]