2

我正在使用 ADLDAP 库 ( http://adldap.sourceforge.net ) 与 Active Directory 进行交互。我正在使用 PHP。我想从 Active Directory 中获取所有用户并将它们保存到数组中。有没有办法做到这一点?

4

2 回答 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 回答