我有一个供用户输入用户名和密码的表单。然后我将这些凭据传递给我想验证用户是否在特定 AD 组中的脚本。我尝试了几个 gitHub adLDAP 项目,但都没有奏效。 php 手册文档中的示例甚至对我不起作用(我确定我做错了)。下面是我的代码,目前它打印出 Array([count] => 0) 所以我假设搜索不起作用,我不知道为什么。我已经尝试了许多来自堆栈上其他帖子的不同“解决方案”,但都没有成功。
$username = $_POST['username'];
$password = $_POST['password'];
$admin = 'xxxx';
$adminpass = "xxxxxx";
$domain = "mydomain.com";
$baseDN = "OU=ManagedUsers,DC=mydomain,DC=com";
$attr = array("displayName","sAMAccountName");
$filter ="(&(objectClass=user)(objectCategory=person)(memberof=cn=WIFI-
Users,OU=ManagedUsers,DC=hennignt,DC=com))";
$conn = ldap_connect("hennigdc01.hennignt.com");
$bind = ldap_bind($conn,$admin.'@' .$domain,$adminpass);
if ($bind){//also tried ldap_search($conn,$baseDN,"memberof=CN=WIFI-Users,{$baseDN}",$attr);
$search = ldap_search($conn,$baseDN,$filter,$attr);
$results = ldap_get_entries($conn, $search);
var_dump ($results);
} else
echo "Error in Binding";
答案 0 :(得分:0)
我通过以下方法解决了这个问题,然后使用 for 循环遍历 $result 中的结果:
$baseDN = "OU=ManagedUsers,DC=hennignt,DC=com";
$filter = "(memberOf=CN=WIFI-Users,OU=ManagedGroups,DC=hennignt,DC=com)";
$attr = array("sAMAccountName");
$bind = @ldap_bind($conn,$username.'@' .$domain,$password);
if ($bind){
$wifiUser = ldap_search($conn,$baseDN,$filter,$attr);
$result = @ldap_get_entries($conn,$wifiUser);
}