【问题标题】:Perl Net::LDAP - Fetch DN without Search?Perl Net::LDAP - 无需搜索即可获取 DN?
【发布时间】:2013-10-03 02:38:36
【问题描述】:

我有 LDAP 条目的 DN。我知道我可以搜索:做这样的事情:

my $search = $ldap->search( 
    base => $dn, 
    scope => "base",
    filter => "(objectclass=*)",
);

但是,我不需要进行搜索。我有 DN。我只是想拉起 DN 条目并直接对其进行操作。像这样的:

my $dn_entry = $ldap->get( $dn );

有没有一种方法可以从 DN 字符串本身获取 DN 条目,或者即使您知道 DN 本身也必须搜索该条目?

【问题讨论】:

    标签: perl ldap


    【解决方案1】:

    使用 LDAP,客户端必须始终搜索或使用扩展操作来获取数据。如果您对与条目关联的所有属性感兴趣,并且 DN 已知,请在搜索请求中使用以下参数:

    • baseObject:已知的 DN
    • 搜索范围:基地
    • 过滤器:(&)(objectClass=*)
    • 要返回的属性列表。一些 API 对所有用户属性使用 *,对所有操作属性使用 +

    【讨论】:

    • 是的,我基本上就是这样做的:搜索库是 DN,范围是 base,过滤器是 (objectclass=*)。我没想过要做到(&)。似乎必须有某种方法可以直接获取 DN,但是查看各种 LDAP API,除了通过搜索之外,它们都不包含任何获取条目的方式。
    【解决方案2】:

    听起来您说的是您存储了“专有名称”(一个字符串)而不是 DN 条目(一个Net::LDAP::Entry 对象)。如果是这种情况,我相信您必须从 DN 创建一个新的Net::LDAP::Entry 对象。文档表明您可以直接将操作应用于此类对象,而无需与服务器同步,但这不会提供给定 DN 的所有数据。如果需要服务器的数据,需要通过$ldap->search(...)获取。

    您是否考虑过使用Net::LDAP::LDIFmechanism 在本地存储DN 数据?

    【讨论】:

    • 是的,我有 DN 字符串而不是条目。我们正在从svn_auth_file 迁移到 LDAP,并且我正在拉出管理链下的所有用户。 Manager 有一个 directReports 属性,其中包含作为直接下属的员工的 DN 字符串。我需要通过这些直接下属递归来获得他们的直接下属,直到我拥有整个组织。由于我有 DN 字符串,我认为使用该 DN 字符串 search 查找 DN 条目会很愚蠢。我希望有某种方法可以直接检索该 DN。
    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多