检索LDAP DN的空属性

时间:2009-10-28 13:58:57

标签: c ldap openldap

我正在为我的公司编写一个工具(在ANSI C中),它从LDAP目录中读取并以特定格式输出所有数据(即:我们旧的专有目录db的名称格式)。 然后由另一个读取输出的工具处理,等等......不要问。

无论如何,对于我的“ldaplist ...”命令,我需要打印属于该条目的所有属性,即使那些没有设置值的属性。

不幸的是,ldap_first_attribute / ldap_next_attribute不会返回它们,只会返回那些设置了值的广告,而我找不到ldap_search_ext_s参数或ldap_set_option转换符会帮助我。 希望你们中的一个人知道如何做到这一点。

感谢您的时间和提前帮助!

2 个答案:

答案 0 :(得分:1)

我没有使用ldap_search_ext_s所以我不知道它的选项,我不能告诉你一个基于使用这个功能的解决方案。但是,我想提出一个想法。

  1. 您需要从LDAP服务器检索架构。模式条目的DN位于根节点中。之后,您必须检索模式条目及其“objectClasses”属性。它包含每个类的规范及其允许的属性类型(模式)。

  2. 运行LDAP搜索时,通常会得到零个,一个或多个条目。每个条目都有一个objectClass属性。读取其值是对象类的名称。然后在模式中查找每个对象类并检索其属性类型。如果在返回的条目中没有一个或几个属性,则表示属性没有任何值,或者您不允许读取此条目中的属性。

答案 1 :(得分:1)

我同意,skwllsp。 您需要为每个条目返回每个对象类的模式并显示每个属性。不幸的是,这可能比你预期的要多得多,因为在这种类型的回报中可能有很多“无用的”数据。

您可以显示已填充的属性,然后显示未填充的所需属性列表。

您可以通过以下方式获得一些帮助: http://developer.novell.com/documentation/samplecode/cldap_sample/index.htm 祝好运 -Jim