好的...我已經在這裏挖掘了示例等,並且仍然存在問題。驗證用戶是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