【发布时间】:2012-07-20 00:57:27
【问题描述】:
我正在尝试了解如何正确实现对 LDAP 服务器的 OpenLDAP 绑定请求的超时。根据我的发现,似乎有两种方法可以做到这一点,LDAP_OPT_TIMELIMIT 和 LDAP_OPT_TIMEOUT。我的主要困惑来自于试图弄清楚它们之间的区别。
据我了解,TIMELIMIT 是一个 LDAP 标准,它为任何 ldap 搜索设置请求/响应周期的时间限制。至少在 Windows 中,默认值为 120 秒。
另一方面,TIMEOUT 是特定于 OpenLDAP 的,纯粹在客户端用于超时 LDAP 绑定请求。这实际上听起来最接近我想要实现的。我从讨论中知道,使用 ldap_set_opt 进行 TIMEOUT 直到 2.4 才完全实现。从How can I cause ldap_simple_bind_s to timeout? 我知道早期版本的解决方法是使用异步绑定,然后是带有超时的 ldap_result 和超时情况下的 ldap_abandon_ext 以丢弃请求。这是有道理的,尽管在 2.4 版本中查看同步绑定的源代码,但它似乎从未以这种方式处理超时。这让我想知道调用 ldap_abandon_ext 的重要性是什么。
任何答案或见解将不胜感激。
【问题讨论】:
-
绑定不是搜索,因此 TIMELIMIT 不相关。
-
这似乎有点令人困惑。 Microsoft docs 似乎暗示 TIMELIMIT 适用于绑定和搜索,OpenLDAP 似乎将它们与 TIMEOUT 和 TIMELIMIT 分开。这只是实现上的区别吗?
-
不同的 API。这些东西不是 LDAP 规范的一部分。