好的...我已经在这里挖掘了示例等,并且仍然存在问题。验证用户是ldap/active directory安全组的一部分
<?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是该小组的一部分,这就是它想要说的。它还对另一个不属于该安全组的用户名/密码表示这一点。
另请注意,如果您需要解决嵌套组成员,你将需要使用Active Directory对LDAP_MATCHING_RULE_IN_CHAIN,它看起来像'的memberOf:1.2.840.113556.1.4.1941:='。有关搜索过滤器语法的更多信息,请参阅http://msdn.microsoft.com/zh-cn/library/aa746475(VS.85).aspx。 – JamieSee
@ hall72215谢谢......这样做......这么简单的事情让我失望了。 和JamieSee ...感谢以及我会记住这一点。不确定你在说什么。我是这个ldap东西的小菜鸟。 – user1883053