我有LDAP条目的DN。我知道我可以搜索它: 做这样的事情:
my $search = $ldap->search(
base => $dn,
scope => "base",
filter => "(objectclass=*)",
);
但是,我不需要进行搜索。我有 DN。我只想拉出 DN 条目并直接对其进行操作。像这样:
my $dn_entry = $ldap->get( $dn );
有没有办法从 DN 字符串本身获取 DN 条目,或者即使您知道 DN 本身也必须搜索该条目?
使用 LDAP,客户端必须始终搜索或使用扩展操作来获取数据。如果您对与条目关联的所有属性感兴趣,并且 DN 已知,请在搜索请求中使用以下参数:
- baseObject:已知的 DN
- 搜索范围:基地
- 过滤器:
(&)
或(objectClass=*)
- 要返回的属性列表。某些 API 对所有用户属性使用
*
,对所有操作属性使用+
。
听起来你说的是你存储了"可分辨名称"(字符串)而不是 DN 条目(Net::LDAP::Entry
对象)。 如果是这种情况,我相信您必须从 DN 创建一个新的Net::LDAP::Entry
对象。 文档指示您可以将操作直接应用于此类对象,而无需与服务器同步,但这不会提供给定 DN 的所有数据。 如果您需要服务器的数据,则需要通过$ldap->search(...)
获取。
您是否考虑过使用 Net::LDAP::LDIF
机制在本地存储 DN 数据?