【问题标题】:php Active Directory lookupphp 活动目录查找
【发布时间】:2013-06-25 18:02:30
【问题描述】:

我正在尝试进行 ldap 授权,然后对组中的成员身份进行二次检查。系统是运行 php 5.3.10 的 Ubuntu 机器,针对 Server2008 R2 Active Directory 进行身份验证。我似乎无法让 ldap_search() 工作。我已经从 jExplore 中提取了 DN,所以我很确定 DN 是正确的。 ldap_bind 与凭据一起工作(在另一个函数中),所以我确定服务器和用户名/密码是有效的。错误:

PHP Warning:  ldap_search(): Search: Operations error in /var/www/zzz.php on line 28

代码:

$ldap = ldap_connect('ldap://xxx.xxx');

$admins = $auth['admin'];
// User not logged in, user level '0'
if (!isset($user))
{
    return 0;
}

    // DN
    $group_dn = 'CN=IT Employees,OU=groups,OU=users,OU=xxx,DC=xxx,DC=xxx';
    // Filter
    $filter = '(sAMAccountName=' . $user . ')';
    // Attributes
    $attr = array("memberof","givenname");
echo $group_dn.' '.$filter.' '.$attr.'<br />';

    // Check if the user is a member of the Admin Group
    $SubGroups = ldap_search($ldap, $group_dn, $filter, $attr); //Search the admin group for user.

    $debug = ldap_get_entries($ldap, $SubGroups);
    echo $debug['count'];

    if ($debug['count']>>0)
    {
        // Yep, you are set admin. (User level 2)
        echo "Admin Set<br />";
      return 2;
    }
    else
    {
        // Failure. Thou art a normal user. (User level 1)
        echo "Admin Denied<br />";
        return 1;
    }
}

【问题讨论】:

  • 也许检查 $ldap 是一个有效的资源?
  • 这个问题的答案应该可以帮到你:stackoverflow.com/questions/6222641/…
  • 感谢 Matthew 的建议,但没有解决。 :(
  • ldap_bind 在哪里?我想念什么吗?通常你必须绑定到 LDAP
  • 是的,这就是问题所在!我在一个功能中进行了连接设置和绑定,并且仅在此处的部分中进行了连接。我想我需要努力让我的代码不那么复杂! :)

标签: php active-directory ldap


【解决方案1】:
$ldap = ldap_connect('ldap://xxx.xxx');

需要改成

$ldap = ldap_connect('ldap://xxx.xxx');
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_start_tls($ldap);
$bind= ldap_bind($ldap, 'user','pass');

【讨论】:

    【解决方案2】:

    我认为这个过滤器应该可以工作:

    (&(objectClass=user)(sAMAccountName=yourUserName)
      (memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
    

    我相信这可以调整为适合你。

    -吉姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多