PHP LDAP AUTHENTICATION FAILS

时间:2014-12-22 05:53:04

标签: php authentication ldap

我正在尝试使用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...";
     }
    

    }

2 个答案:

答案 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>

标识的用户的密码