以下に示すように、ユーザー cn に基づいてユーザー DN を openldap サーバーに照会する C コードがいくつかあります。Apache DS を使用して LDAP サーバーを検索すると、結果のみが表示されます。ただし、私の C コードは 2 つのレコードを返します。1 つは予想どおりユーザーの DN で、2 番目のレコードは空白の DN です!! この 2 番目のレコードは何のためですか? これは予想される動作ですか?
わかりやすくするために、すべてのエラー チェックを削除したコード サンプルを以下に示します。
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: ()