我正在尝试了解如何正确实现对LDAP服务器的OpenLDAP绑定请求的超时。根据我的发现,似乎有两种方法可以做到这一点,使用LDAP_OPT_TIMELIMIT和LDAP_OPT_TIMEOUT。我的主要困惑来自于试图找出它们之间的区别。
据我了解,TIMELIMIT是一个LDAP标准,它为任何ldap搜索设置请求/响应周期的时间限制。至少在Windows中,默认值为120秒。
另一方面,TIMEOUT是特定于OpenLDAP的,并且纯粹用于客户端以超时LDAP绑定请求。这实际上听起来最接近我想要实现的内容。我从讨论中得知,对于TIMEOUT使用ldap_set_opt直到2.4才完全实现。从How can I cause ldap_simple_bind_s to timeout?开始,我知道早期版本的解决方法是使用异步绑定,然后使用带有超时的ldap_result和超时情况下的ldap_abandon_ext来删除请求。这是有道理的,虽然在版本2.4中查看同步绑定的源代码,它似乎永远不会以这种方式处理超时。这让我想知道调用ldap_abandon_ext的重要性是什么。
任何答案或见解都将受到赞赏。
答案 0 :(得分:0)
如果有人正在寻找OpenLDAP绑定超时,你应该使用Aki的答案here中的方法。 当使用LDAPAsynConnection进行绑定时,它也在ldapcpp库中工作。在绑定之前,您必须使用getSessionHandle()方法启用它。