我正在向我的一个仪表板添加身份验证。我相信我的设置有点独特。我们使用服务帐户来获取用户的 DN,此查询按预期工作。然后我们使用新的 dn 而不是服务帐户进行第二次绑定。这也有效,因此从技术上讲,此时用户已正确验证。我试图在成功绑定后执行第二个 ldap_search 作为我从第一个查询中提取的 dn。不幸的是,这给了我之前 ldap_search 的结果。这是我不明白的。if($bind = @ldap_bind($ldap, $ldap_dn, $adminpass)) { // valid echo "bound to ldap<BR>\n"; $filter = "(&(objectclass=user)(samaccountname=$user))"; $attr = array("dn, password, samaccountname"); $dn = "DC=CORP,DC=COMPANY,DC=com"; $result = ldap_search($ldap, $dn, $filter, $attr) or exit("Unable to search LDAP server"); $entries = ldap_get_entries($ldap, $result); // Now build second query to bind and authenticate as user. $ldap_dn_bind = $entries["0"]["dn"]; echo $ldap_dn_bind; if($ubind = @ldap_bind($ldap, $ldap_dn_bind, $password)) { echo "bound as $user - $ldap_dn_bind<BR>\n\n"; // Works $u_attr = array("description, physicaldeliveryofficename, postaladdress, st, postalcode, title, telephonenumber, mobile, samaccountname, givenname, sn, company, displayname, employeetype, mail, manager, employeeID, KMADescription, terminationdate"); $u_result = ldap_search($ldap, $dn, $filter, $u_attr) or exit("Unable to search LDAP server"); echo "ldap search<BR>\n"; $u_entries = ldap_get_entries($ldap, $u_result); echo "print u_entries"; print_r($u_entries); echo "done"; } else { die("failed to authenticate user"); }这一行: $u_result = ldap_search($ldap, $dn, $filter, $u_attr) or exit("Unable to search LDAP server"); 似乎可以按预期工作,并且执行 ldap 搜索没有错误。但是,$u_entries 包含与 $entries 相同的信息,这就是我遇到问题的地方。我正在尝试获取有关用户的详细信息并将它们插入到本地数据库中(如果它们尚不存在)。
2 回答
Helenr
TA贡献1780条经验 获得超4个赞
我之前遇到过同样的问题,请检查您的 LDAP 服务器是否允许外部连接。
如果您使用电子邮件,请检查您的 $dn 变量,仅在 @ 符号后输入内容
还要确保您的管理员凭据
这个链接也帮助我更多地理解它:https : //github.com/Adldap2/Adldap2-Laravel/issues/224注意我使用 Laravel
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消