繁体   English   中英

PHP LDAP认证失败

[英]PHP LDAP AUTHENTICATION FAILS

我正在尝试使用PHP LDAP验证电子邮件ID和密码。 我只是想进行身份验证,而无需访问联系人,邮件或日历。 只需确认他是有效用户即可。 主机名正确。 端口号也正确。 请帮忙。 请注意我的情况

  1. 我的邮件ID是xxxxx@childcompany.com,用户名是yyyyyy
  2. 我的邮件由母公司(mail.parentcompany.com)托管和处理

     $username = 'yyyyyy@parentcompany.com'; //If i use this line Unable to bind to server: Strong(er) authentication required $username = 'yyyyyy';//If i use this line Unable to bind to server: Invalid credentials $username = 'xxxxx@childcompany.com' //If i use this line Unable to bind to server: Invalid credentials $password = 'mypassword'; $ldap = ldap_connect("10.1.1.1",389) ; if ($ldap) { $ldapbind = ldap_bind($ldap,$username,$password ); if ($ldapbind) { echo "LDAP bind successful..."; } else { echo "LDAP bind failed..."; } 

    }

我想对了,您的用户输入了他的电子邮件和密码,并且您要基于此对他进行身份验证吗? 您提到的用户名yyyyyyy是您用于LDAP搜索连接的用户吗? 还是用户输入yyyyyy作为其用户名?

如果您的用户输入电子邮件和密码(仅),通常要使其正常工作,您需要一个对您要绑定的目录(yyyyyy)具有搜索特权的用户,如果您想通过电子邮件查找最终用户(请注意,如果允许使用同一电子邮件的多个帐户,您可能会获得多个记录)

在这种情况下,通常的想法是将您的应用程序用户绑定到目录,通过用户的电子邮件对用户的DN进行LDAP查询,然后进行其他绑定以测试使用用户提供的密码找到的DN。

您还应该检查登录结构,有时用户名应以短域名(例如“ mydomain \\ username”)为前缀,以登录ldap。

由于没有简便的方法来调试绑定问题,因此我还使用Wireshark / TCPDump监视与LDAP服务器之间的通信(在我的情况下,该通信没有经过SSL加密),并且可以看到服务器发送和接收的内容是什么。

看看https://gist.github.com/heiglandreas/5689592 这是一个简单的ldap-bind示例,显示了如何使用任何给定属性针对LDAP验证用户。 可能也会帮助您。

我还建议您通过使用“ ldapsearch”之类的控制台工具来检查返回的信息是否真正符合您的期望。

您还可以通过提供ldapsearch -h <host> -D <bindDN> -W类的凭据来测试ldap-bind。 -W将提示输入由<bindDN>标识的用户的密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM