我正在使用 ADLDAP 库 ( http://adldap.sourceforge.net ) 与 Active Directory 进行交互。我正在使用 PHP。我想从 Active Directory 中获取所有用户并将它们保存到数组中。有没有办法做到这一点?
问问题
6583 次
2 回答
5
您可能想要执行以下操作:
$adldap = new adLDAP();
$usernames = $adldap->user()->all();
$users = array();
foreach ($usernames as $username)
{
$userInfo = $adldap->user()->infoCollection($username);
$users[$username] = $userInfo;
}
该all()
方法在这里被证明。
于 2012-04-10T18:49:52.457 回答
1
假设目录管理员允许 LDAP 客户端应用程序从目录中检索所有条目,namingContexts
则从根 DSE 中提取属性值。此属性的值(它是多值的)是此服务器支持的命名上下文或后缀。使用此信息,使用以下命令构建搜索:
- 命名上下文
- 大小限制 0f 0(无大小限制)
- 时间限制为 0(无限时间)
- 例如,将匹配所有条目的过滤器,
(objectClass=*)
或(&)
- 一个足以发现所有条目的范围,可能
subtree
- 您需要的属性列表
为每个 构建此搜索namingContext
。同样,假设目录管理员允许 LDAP 客户端搜索整个目录,这些搜索将导致包含每个条目的响应。
有很多注意事项,例如:
- 这是管理员允许的吗?
- 您的应用程序能否增长到足以处理数据(如果不是简单分页结果机制可能提供解决方案)。
- 我被告知 AD 对 LDAP 客户端施加了 1000 的大小限制。即使这是真的,也不应该使用目录基础结构或供应商的知识对 LDAP 客户端进行编码。这样做会导致难以维护的糟糕、脆弱的代码。所有 LDAP 客户端都必须按照 IETF 的 LDAP 理事会规定的标准进行编码。
有关更多信息,请参阅:
于 2012-03-06T11:01:24.777 回答