ldap_search_s 如果我在使用 SASL(Kerberos) 身份验证绑定到 ldap 时使用 root 作为基本 dn,则会失败

ldap_search_s fails if I use root as a base dn when SASL(Kerberos) authentication is used to bind to ldap

我有一个使用 SASL(Kerberos) 绑定到 ldap 的应用程序。在这种情况下 ldap_search_s function returns 当我使用 root 作为基础 dn 时运行错误。例如,如果 base_dn="DC=AD" 并且过滤器是 (cn=administrator) ldap_search_s returns 1. ldap_search_s 当我将相同的过滤器与 base_dn = "OU=OMD,DC=AD"(它也适用于用作基础 dn 的树中的任何其他子条目)。当我使用 ldap_simple_bind_s 函数绑定到服务器时,我没有看到同样的问题。你能帮我理解我做错了什么吗?

以下是根据我们长时间的聊天得出的浓缩答案:

尽管某些子树搜索失败,但您的绑定实现似乎很合理。使用 Wireshark 查看实际情况。您很可能收到推荐人结果而不是正确答案。 API 可能设置为 follow 并尝试执行。由于您执行的是手动而非交互式绑定,因此后续的内部绑定不完整且解析失败。您可以禁用推荐追踪并手动处理内容,或者将连接的端口设置为 3268 并使用全局目录。这将为您提供完整的只读森林视图。没有推荐了。