php Ldap连接问题

时间:2015-01-09 07:01:49

标签: php ldap

请查看以下内容。我附上了DN设置和用户帐户的详细信息。我能够使用LDP.exe对帐户进行身份验证,并提供正确的详细信息。

我在运行此脚本时遇到错误

Warning: ldap_bind(): Unable to bind to server: Invalid credentials in /var/www/html/portal/ldap.php on line 8

以下是我试图开始工作的php脚本。

<?php

$ldapconn = ldap_connect("server_url") or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding anonymously
    $ldapbind = ldap_bind($ldapconn,'uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local','Password');

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

}

?>

以下是DN设置的屏幕截图

ldap dn

以下是使用

进行测试的用户的屏幕截图

ldap user

我使用过LDP.exe并能够验证详细信息。

res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3
    {NtAuthIdentity: User='lyall'; Pwd=<unavailable>; domain = 'cn=Domain Admins,cn=Users,dc=svo,dc=local'}
Authenticated as: 'SVO\Lyall'.

2 个答案:

答案 0 :(得分:1)

你确定Lyall的DN是uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local吗?对我来说,看起来Lyall只是小组cn=Domain Admins,cn=Users,dc=svo,dc=local的一员。这并不一定意味着Lyells DN是uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local。它也可能是uid=Lyall,cn=Users,dc=svo,dc=local或其他东西。也许这可以帮助您解决问题。

答案 1 :(得分:0)

Active Directory中没有uid这样的属性。您帐户的专有名称很可能以CN=开头。如果您可以访问Powershell的Active Directory模块(通常安装在域控制器或指定用于管理域的计算机上),则可以通过运行以下命令检查完整的可分辨名称:

Get-ADUser YOUR_LOGINID_HERE -Properties DistinguishedName

(我希望我做得对,自从我使用PS以来已经有一段时间了)

无论如何,DN不是您可用于验证/绑定到Active Directory的唯一属性 - 您可以使用大量其他更容易记住的选项:

  • samAccountName SVO \ Lyall
  • userPrincipalName Lyall@svo.local (有时它与电子邮件地址相同,取决​​于您如何命名用户帐户)
  • DisplayName

有关可用属性的详细说明,请参阅MSDN上的Simple Authentication

警告 - 自我宣传如下:
我编写了一些库,可以更轻松地使用ldap,所以如果您有兴趣,请查看Ldap-Core