好的......我已经在这里挖掘了示例等,我仍然遇到问题。
<?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是该组的一部分。它还说明了另一个不属于该安全组的用户名/密码。
答案 0 :(得分:1)
您的过滤器正在寻找任何用户,该用户是Internet-Purchasing-Allowed组的直接成员。您需要将(sAMAccountName = $ valid_session_username)添加到您的过滤器。
答案 1 :(得分:0)
您必须在过滤器中定义 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."))";
您必须将LDAP与具有必要权限的帐户绑定。在所有“OU =安全组”上创建一个具有读取权限的管理员帐户。然后在代码中与它绑定。
$bd = ldap_bind( $ad, $admin_session_username."@flrc.local", $admin_session_password) or die("Can't bind to server.");