【问题标题】:PHP ldap_bind() authentication - error Unable to bind to server: Invalid credentials?PHP ldap_bind() 身份验证 - 错误无法绑定到服务器:凭据无效?
【发布时间】:2017-12-05 15:43:01
【问题描述】:

我正在尝试使用 PHP 对 LDAP 用户进行身份验证。我有已检查正确的用户的 DN。我也有密码。这是用户使用SamAccountName 进行身份验证时的正确密码。

我希望这是使用 DN 进行身份验证时使用的密码。 LDAP 没有专有名称专用密码吗?以下是我使用 PHP 的 ldap_bind() 函数进行身份验证的代码。我这样做对吗?

$ldaphost="ldap://somehost.com:3268";
$dn = "cn=LastName\, FirstName Dept/Country/ext,OU=Accounts,OU=Location,ou=Division,";
$basedn="dc=abc,dc=enterprise";

if (!($connect = ldap_connect($ldaphost))) {    
  die ("Could not connect to LDAP server"); 
} 

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password);

if ($ldapbind) {
   echo "LDAP bind successful...";
} else {
   echo "LDAP bind failed...";
}

我从上面的代码得到的结果是:

警告:ldap_bind() [function.ldap-bind]:无法绑定到服务器: 无效凭据 LDAP 绑定失败...

从调用ldap_bind() 的行开始:

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password);

无效的凭据让我相信 DN 或密码可能有问题。我已经对 DN 进行了三次检查,据我所见,那里没有错误。

有什么想法吗?

【问题讨论】:

    标签: php ldap


    【解决方案1】:

    我猜您正在连接到 Microsoft 域,然后您可以尝试使用域语法来获取凭据。对于 DOMAIN 中的 User015 - DOMAIN\user015

    【讨论】:

    • 宾果游戏!这样可行!那么你在 ldap_bind() 中使用的用户 ID 取决于 ldap 服务器的域类型?或者服务器的管理员可以更改它吗?因此,在某些 ldap 域上使用 DN,在其他域上使用 DOMAIN\user。而其他可能的用户 ID 是电子邮件地址?
    • @user840930 DOMAIN\user 只允许在 Microsoft 域控制器上使用,LDAP 默认是要求(我可能在这里错了)完整的 DN,我觉得这很有趣,因为这仅在 LDAP 中可用。
    • @Stephan B 你能告诉我我们可以在哪里更改这个 DOMAIN\user 吗?你能帮帮我吗?
    • @ErSharadSoni 请发布一个新问题并说明您的问题到底是什么。
    【解决方案2】:

    在处理 ldap 时,我总是觉得 jxplorer 很有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2014-10-15
      相关资源
      最近更新 更多