【问题标题】:Obtaining properties from LDAP server (Distinguished Name, etc)从 LDAP 服务器获取属性(专有名称等)
【发布时间】:2013-07-03 06:41:52
【问题描述】:

我需要使用 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。

【问题讨论】:

    标签: c# .net-4.0 ldap


    【解决方案1】:

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

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

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

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

    如果基础对象未知,则在根 DSE 中传输namingContexts 属性的搜索请求。根DSE只能通过使用“”的基础对象和“base”的搜索范围来获得。过滤器应为(&)(objectClass=*)。目录服务器在根 DSE 中发布某些信息,包括命名上下文,尽管该信息与其他所有信息一样受访问控制的影响。

    另见

    【讨论】:

    • 感谢您的回复,但用户不会提供“基本对象”,他只会在表单上提供 LDAP 服务器的名称。我必须从 LDAP 服务器名称(动态)中找出“基础对象”。
    • 搜索根 DSE。见LDAP: The Root DSEnamingContexts 属性。
    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多