【问题标题】:PHP LDAP AUTHENTICATION FAILSPHP LDAP 身份验证失败
【发布时间】:2014-12-24 16:31:50
【问题描述】:

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

    }

【问题讨论】:

  • 您的用户在 LDAP 服务器上的 DN 是什么?如果不知道这一点,您将很难让它发挥作用。
  • 对不起@RobbyCornelissen .. 你在问域组件我对吗?
  • 不。唯一标识 LDAP 服务器上的用户的专有名称。

标签: php authentication ldap


【解决方案1】:

让我说对了,您的用户输入了他的电子邮件和密码,您想根据此对他进行身份验证吗?您提到的用户名 yyyyyyy 是您的 LDAP 搜索连接用户吗?或者用户输入 yyyyyy 作为他的用户名?

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

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

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

由于没有简单的方法来调试绑定问题,我还使用 Wireshark/TCPDump 来监视进出 LDAP 服务器的流量(在我的情况下它不是 SSL 加密的),我可以看到确切发送和接收的内容服务器。

【讨论】:

  • 只是他们将输入 yyyyy 作为用户名和密码。我需要验证此用户登录凭据是否正确。如果他们是正确的,我会返回 Success
  • 您还应该检查登录结构,有时用户名应以短域为前缀,例如“mydomain\username”以登录 ldap。由于没有简单的方法来调试绑定问题,因此我还使用 Wireshark/TCPDump 来监控进出 LDAP 服务器的流量(在我的情况下它不是 SSL 加密的),并且我看到了从服务器发送和接收的确切内容。
  • 关于 @RobbyCornelissen 的 DN 评论,您的 DN 应如下所示:CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=COM
【解决方案2】:

看看https://gist.github.com/heiglandreas/5689592。这是一个简单的 ldap-bind 示例,展示了如何针对具有任何给定属性的 LDAP 对用户进行身份验证。也可以帮到你。

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

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

【讨论】:

  • hi @heiglandreas gist.github.com/5689592.git 链接失效.. 你能更新正确的链接吗
  • 很抱歉给您带来了困惑。刚刚将链接更改为正确的链接!
猜你喜欢
  • 1970-01-01
  • 2016-08-20
  • 2020-04-14
  • 2015-04-19
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多