我正在尝试使用PHP LDAP验证电子邮件ID和密码。只是我想验证不需要访问联系人或邮件或日历。只需确认他是有效用户。主机名是正确的。端口号也正确。请帮忙。 请注意我的情景
我的邮件由母公司(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...";
}
}
答案 0 :(得分:1)
让我说对了,你的用户输入了他的电子邮件和密码,你想根据这个来验证他吗?您提到的yyyyyyy用户名是您的LDAP搜索连接用户?或者用户输入yyyyyy作为他的用户名?
如果您的用户输入电子邮件和密码(仅限),通常为了使其正常工作,您需要一个对您正在绑定的目录(yyyyyy)具有搜索权限的用户,如果您想要查找结束用户通过电子邮件(注意,如果允许多个帐户允许相同的电子邮件,您可能会获得多条记录)
在这种情况下,一般的想法是将您的应用程序用户绑定到目录,通过他的电子邮件对用户的DN执行LDAP查询,然后执行其他绑定以使用由提供的密码测试您找到的DN。用户。
您还应该检查登录结构,有时用户名应该以短域为前缀,例如“mydomain \ username'用于登录ldap。
由于没有简单的方法来调试绑定问题,我还使用Wireshark / TCPDump来监控进出LDAP服务器的流量(在我的情况下它不是SSL加密的),我看到确切地发送和接收的是什么服务器。
答案 1 :(得分:0)
看看https://gist.github.com/heiglandreas/5689592。这是一个简单的ldap-bind示例,演示了如何使用任何给定属性对LDAP进行身份验证。也可以帮助你。
我还建议您使用像'ldapsearch'这样的控制台工具检查您获得的信息是否真的符合您的期望。
您也可以通过提供ldapsearch -h <host> -D <bindDN> -W
等凭据来测试ldap-bind。 -W将提示输入<bindDN>