【问题标题】:Ldap query on multiple OU多个 OU 上的 Ldap 查询
【发布时间】:2012-11-05 11:17:21
【问题描述】:

我在 PHP 中编写了一个 ldap 查询类来验证用户。 我需要查询 ldap 服务器到多个 OU,这是一个例子:

DC=mydomain,DC=com
    OU=MyBusiness
        CN=MyGroup

DC=mydomain,DC=com
    OU=Users
        CN=Domain Users

在这个域中,我有两个 OU,一个是我的自定义 OU 和一个组。另一个是标准的 Windows OU。 我想创建一个查询来获取两个组,一个在 OU=Users 内部,一个在 OU=MyBusiness... 但似乎不可能。 我试过这个连接:

$r=ldap_connect($ldap_host,$ldap_port);
ldap_bind($r,$user,$passw);
$domain="OU=MyBusiness,DC=mydomain,DC=com";
$sr=ldap_search($r, $domain ,"(&(objectClass=user)(sAMAccountName=".$user."))");

但只获得了 MyBusiness 的组,我也尝试了这些:

$domain="OU=Users,DC=mydomain,DC=com"; //gets only the other group
$domain="DC=mydomain,DC=com"; //error
$domain="OU=*,DC=mydomain,DC=com"; //error

但是没有人工作。我该怎么办?

【问题讨论】:

  • 如果你只是想搜索一个用户,你可以使用DC=mydomain,DC=com的baseDn
  • 是的,你是对的。但有时我只需要使用“ldapuser”获取用户详细信息,而不需要在目录中提供搜索。我需要在 $domain="OU=*,DC=mydomain,DC=com"; 中搜索吗?

标签: php active-directory ldap-query


【解决方案1】:

给你 - 应该这样做。 (顶级“DC=mydomain,DC=com”搜索需要这些 ldap_options)

$r=ldap_connect($ldap_host,$ldap_port);
ldap_set_option($r, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($r, LDAP_OPT_REFERRALS, 0);
ldap_bind($r,$user,$passw);
$search = "(&(objectClass=user)(sAMAccountName=$user))";
$attributes = array("cn","displayName","dn");
$sr=ldap_search($r,$domain,$search,$attributes);
$results = ldap_get_entries($r,$sr);
foreach ($results as $result) {
  echo $result['cn'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多