PHP ldap_bind()本地问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP ldap_bind()本地问题相关的知识,希望对你有一定的参考价值。

我有一个脚本需要在我公司的Active Directory上显示用户列表。

为了执行它,我使用专用的AD帐户(有权在AD上搜索)。我这样做:

$ldapResource = ldap_connect('ldap://*********');
ldap_set_option($ldapResource, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapResource, LDAP_OPT_REFERRALS, 0);

ldap_bind($ldapResource, "CN=My company standard Account, OU=*******", "account_password");

然后,我正在进行搜索

ldap_search(...)

通过这样做,问题是当我在本地运行脚本(使用xampp)时,我失去了我当前的帐户权限(比如Internet访问,因为标准帐户没有这个权限?)。

如果我想以我的真实个人资料登录,我需要运行一个脚本,用我自己的凭据验证我(ldap_bind())。

有没有解决方案可以避免丢失我的主要身份验证?我应该以另一种方式进行研究吗?

答案

尝试下面的示例,看它是否有效。它列出了所有用户。根据您的需要更改变量。查看this了解更多示例。

$username = 'yowyow';
$password = '123123';
$server = '192.168.32.4';
$domain = '@yourdomain.local';
$port = 389;

$connection = ldap_connect($server, $port);
if (!$connection) {
    exit('Connection failed');
}

// Help talking to AD
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0);

$bind = @ldap_bind($connection, $username.$domain, $password);
if (!$bind) {
    exit('Binding failed');
}

// This is where you can do your work
$unit = 'sales';
$distinguished_name = "OU=$unit,DC=yourdomain,DC=local";
$filter = "(sAMAccountName=*)";

$search = ldap_search($ldap_connection, $distinguished_name, $filter);
$total_record = ldap_count_entries($ldap_connection, $search);
$returned = ldap_get_entries($ldap_connection, $search);

if ($total_record > 0) {
    print_r($returned);
}
// End

ldap_close($ldap_connection);

以上是关于PHP ldap_bind()本地问题的主要内容,如果未能解决你的问题,请参考以下文章

超级有用的9个PHP代码片段

代码片段 PHP,预期文件结尾,我错在哪里?

PHP必用代码片段

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

PHP代码-psysh调试代码片段工具

超实用的php代码片段