c - ldap_search_ext 返回额外结果

标签 c ldap openldap

我有一些 C 代码,可以根据用户 cn 查询 openldap 服务器的用户 DN,如下所示。当我使用 Apache DS 搜索 ldap 服务器时,仅显示结果。然而我的 C 代码返回 2 条记录;第一个记录包含预期的用户 DN,第二个记录包含空白 DN!这第二条记录有什么用呢?这是预期的行为吗?

为了清楚起见,我添加了下面的代码示例,并删除了所有错误检查。

ldap_search_ext(ld, (char *)baseDN, LDAP_SCOPE_SUBTREE, "(&(objectClass=person)(cn=test00002))", NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &msgid);
ldap_result(ld, msgid, 1, NULL, &res);
numUsersFound = ldap_count_messages(ld, res);
syslog(LOG_DEBUG, "DEBUG Number of users found: (%d)", numUsersFound);

结果

DEBUG Number of users found: 2
DEBUG User DN: (cn=test00002,ou=defaultRealm,dc=company,dc=com)
DEBUG User DN: ()

最佳答案

做了一些更多的故障排除,我发现有两种方法:

> int ldap_count_entries( LDAP *ld, LDAPMessage *result );  => returns 1
> int ldap_count_messages( LDAP *ld, LDAPMessage *result ); => returns 2

现在,我不完全确定“条目”和“消息”之间有什么区别,但至少它部分地解决了这个谜团。

关于c - ldap_search_ext 返回额外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308223/

相关文章:

php - 使用完整的密码将用户从 Keycloak 迁移到 LDAP

authentication - LDAP 与关系数据库

linux - 如何使用 ldapmodify 对 slapd OLC 进行初始设置

linux - 拒绝远程计算机上的 root 用户更改 LDAP 用户详细信息

python - 如何查找用户所属的所有组? (LDAP)

c++ - 测量内存的潜伏期

c - 为什么这个变量值在退出函数后又恢复为默认值?

powershell - Active Directory-按脚本填写唯一ID

c - 用C读取带有空格的文件.txt

c - 两种声明有什么区别?