php - 如何在php中验证广告组成员身份
问题描述
我有一个表格供用户输入用户名和密码。然后我将这些凭据传递给我想验证用户是否在特定 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";
解决方案
我通过以下方法解决了这个问题,然后使用 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);
}
推荐阅读
- apache-spark - 加载数据以通过 spark 点燃
- c# - 如何以编程方式注册 Nlog 扩展/布局渲染器(NLog.Web.AspNetCore)?
- keras - LSTM 3D 输入 3D 输出尺寸不匹配
- java - 在 LeanFT 中将 DynamicObjectProxy 转换为 Object[]
- java - 如何找到聚类的最佳 K?
- javascript - Angular,如何使用基于布尔值的指令
- spring-boot - 当 JBOSS EAP 启动时,Spring boot webservice 启动并被发现
- android - 错误:清单合并失败并出现多个错误,请参阅日志 | 但日志中没有错误
- ios - captureOutput() 函数永远不会被调用 swift4
- javascript - 函数完成后如何执行代码