1

好的...我已经在这里挖掘了示例等,但我仍然遇到问题。

<?php
// SHOW ERRORS 0=NO 1=YES
ini_set('display_errors', '1');


//USER
$valid_session_username = $_POST["username"];
$valid_session_password = $_POST["password"];

//MEMBER OF THIS GROUP
$dn = "DC=FLRC,DC=local";
$group = "CN=Internet-Purchasing-Allowed,OU=Security Groups,DC=FLRC,DC=LOCAL";
$filter = "(&(objectClass=user)(memberOf=$group))";


$ad = ldap_connect("srv-flc-dc03") or die("Couldn't connect to AD!");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($ad, LDAP_OPT_REFERRALS,0);
$bd = ldap_bind( $ad, $valid_session_username."@flrc.local", $valid_session_password) or die("Can't bind to server.");
$sr = ldap_search($ad, $dn, $filter);


$found = false;

if ($sr !== false) {
    $count = ldap_count_entries ($ad, $sr);
    if ($count !== false && $count > 0) {
     $found = true;
    }
}

if ($found === true) {
    print $valid_session_username.' does have access to this page';
} else {
    print $valid_session_username.' does NOT have access to this page';
}


?>

我不知道我错过了什么。当我提交我的凭据时,它显示“SRAY 确实有权访问此页面”。这是它应该说的,因为 SRAY 是该组的一部分。它还为不属于该安全组的另一个用户名/密码说明了这一点。

4

2 回答 2

1

您的过滤器正在寻找任何属于 Internet-Purchasing-Allowed 组的直接成员的用户。您需要将 (sAMAccountName=$valid_session_username) 添加到您的过滤器。

于 2012-12-06T16:59:55.700 回答
0
  1. 您必须在过滤器中定义sAMAccountname

    //MEMBER OF THIS GROUP
    $dn = "DC=FLRC,DC=local";
    $group = "CN=Internet-Purchasing-Allowed,OU=Security Groups,DC=FLRC,DC=LOCAL";
    $filter = "(&(objectClass=user)(sAMAccountname=".$valid_session_username.")(memberOf=".$group."))";
    
  2. 您必须将 LDAP 与具有必要权限的帐户绑定。创建一个对所有“OU=Security Groups”具有读取权限的管理员帐户。然后在你的代码中绑定它。

    $bd = ldap_bind( $ad, $admin_session_username."@flrc.local", $admin_session_password) or die("Can't bind to server.");
    
于 2014-05-12T07:48:08.103 回答