请查看以下内容。我附上了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设置的屏幕截图
以下是使用
进行测试的用户的屏幕截图
我使用过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'.
答案 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。