【问题标题】:LDAP port 636 DirectoryEntry properties do not contain groupmembership although LDAP doesLDAP 端口 636 DirectoryEntry 属性不包含组成员,但 LDAP 包含
【发布时间】:2012-10-12 16:31:20
【问题描述】:

在 C# 中,我使用以下代码绑定到一个安全的 LDAP 站点

authServer =
    new DirectoryEntry("LDAP://whatever.com:636",
          authServerUsernameFromConfig,
          authServerPasswordFromConfig,
          AuthenticationTypes.Anonymous );

然后搜索找到OK的用户。

然后检查以下集合以查找“groupMembership”的属性名称

DirectorySearcher directorySearch = new DirectorySearcher(authServer, filterKey);
...
SearchResult result = directorySearch.FindOne();
...
authUser = new DirectoryEntry(result.Path, userDN, password, AuthenticationTypes.None);
...
(read) authUser.Properties.PropertyNames

但是在使用 636 安全端口时没有找到。找到其他属性。当绑定到非安全 PORT 时,所有属性都可以找到具有 636 绑定的属性以及名为 groupMembership 的属性。

谁能解释为什么会这样或者如何找回它们。

似乎使用 LDP.exe 实用程序可以看到这些 groupMembership 属性与安全端口 636 绑定。

【问题讨论】:

    标签: c# ldap port directoryentry


    【解决方案1】:
    • 目录信息树没有属性。目录信息库的属性被分组到条目中。属性可能是多值的,属性总是单值的。
    • LDAP 客户端不“绑定”到连接。 LDAP 客户端建立到安全端口(使用 SSL)或非安全端口(如果客户端需要并且服务器允许,可以将其“提升”到安全连接)的连接。一旦建立了连接,该连接就没有授权状态。然后,LDAP 客户端可以使用 BIND 操作请求服务器验证凭据并更改连接的授权状态。服务器使用连接的授权状态来确定使用该连接的客户端是否有权访问条目和包含这些条目的属性。
    • 如果连接不是安全连接,现代、专业品质的 LDAP 服务器能够拒绝对某些敏感属性的访问。如果 LDAP 客户端正在访问的服务器具有此功能,则通过安全连接与非安全连接访问数据没有区别。这些旧版服务器不区分安全和非安全连接以确定访问权限和特权 - 连接的授权状态用于确定访问权限)

    使用ldapsearch 等已知良好的工具来验证LDAP 客户端是否可以根据需要访问数据。如果已知良好的 LDAP 客户端可以访问数据而手动编码的 LDAP 客户端不能,则检查搜索请求的以下参数:

    • 基础对象或基础 DN。这是搜索开始的地方。不返回高于基础对象的条目
    • 搜索范围。 BASE 仅返回条目和请求属性,ONE 返回直接从属于基础对象的条目,SUB 返回基础对象和从属于基础对象的所有条目,在任何级别。
    • 过滤器。过滤器用于缩小搜索范围,由 attributeType-attributeValue 断言组成,可以有多种不同的形式
    • 服务器将从与其他搜索参数匹配的条目中返回的请求属性。如果没有请求,某些 API(不是全部)会返回所有用户属性。

    另见

    【讨论】:

    • 因为发现636并没有像指出的那样影响结果
    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多