如何在 php 中验证广告组成员身份

时间:2021-02-22 22:32:23

标签: php ldap

我有一个供用户输入用户名和密码的表单。然后我将这些凭据传递给我想验证用户是否在特定 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";

1 个答案:

答案 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);
}