从LDAP服务器获取属性(专有名称等)

时间:2013-07-03 06:41:53

标签: c# .net-4.0 ldap

我需要帮助使用 C#4.0 代码从LDAP服务器检索所有可能的属性(专有名称等)和值。
我的最终用户只需在我的应用程序中输入LDAP服务器的名称。
LDAP服务器可以是私人服务器,也可以是此页面中提供的开放式LDAP服务器Public LDAP servers 我使用System.DirectoryServices.Protocols.LdapConnection类连接到LDAP服务器和System.DirectoryServices.Protocols.SearchRequest类来检索值。

这是我的问题:

System.DirectoryServices.Protocols.SearchRequest类要求服务器的专有名称作为检索用户,组等的参数。
我的最终用户只需输入服务器名称。
我必须通过我的C#代码从服务器获取专有名称。我无法找到(甚至谷歌)解决我的问题的C#解决方案。
我在网上发现了一个实际上做我想要的应用程序。 我只提供了LDAP服务器名称,并从该服务器检索了值(专有名称,端口号等)。

有人可以为我提供一个使用C#.NET 4.0获取值的解决方案。

我不能使用任何付费的第三方软件或dll。

1 个答案:

答案 0 :(得分:0)

LDAP不使用属性,它具有属性。要从服务器获取属性,LDAP客户端必须连接到服务器,使用BIND请求对连接进行身份验证,然后将搜索请求传输到服务器并解释服务器的响应。搜索请求至少包含以下内容:

  • 基础对象
  • 搜索范围
  • 搜索过滤器
  • 要检索的属性列表

正确编码的LDAP客户端除了包含上述必需元素外,还将包括大小限制和时间限制。

来自服务器的搜索结果将包含整数结果代码,以及与搜索请求参数匹配的对象列表(由搜索过滤器过滤)。搜索可以成功但不返回任何条目。

如果基础对象未知,则在根DSE中发送namingContexts属性的搜索请求。只能通过使用“”的基础对象和“base”的搜索范围来获取根DSE。过滤条件应为(&)(objectClass=*)。目录服务器在根DSE中发布某些信息,包括namingContexts,尽管该信息受其他所有访问控制的约束。

另见