PHP ldap_bind()本地问题

时间:2018-09-10 08:09:07

标签: php ldap

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

要执行此操作,我使用了专用的AD帐户(已授权在AD上进行搜索)。我这样做是这样的:

DataGridCellBackgroundBrush

然后,我正在搜索

DataGridBorderBrush

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

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

有什么解决方案可以避免丢失我的主要身份验证?我应该以其他方式进行研究吗?

1 个答案:

答案 0 :(得分:0)

尝试下面的示例,看看它是否有效。它列出了所有用户。根据需要更改变量。查看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);